一个节点。
由❤️赞助:
Capsolver.com是一项由AI驱动的服务,专门从事自动求解各种验证码。它支持验证码,例如recaptcha v2,recaptcha v3,hcaptcha,funcaptcha,datadome,AWS Captcha,Geetest和Cloudflare Captcha / Challing Captcha / Challenge 5s,Imperva / Incapsula等。对于开发人员而言,Capsolver提供了文档中详细介绍的API集成选项,从而促进了验证验证解决方案的集成到应用中。他们还为Chrome和Firefox提供浏览器扩展,使直接在浏览器中使用其服务变得易于使用。可以使用不同的定价软件包来满足不同的需求,从而确保用户灵活性。
# Using npm
npm install --save scrape-it
# Using yarn
yarn add scrape-it PROTIP :您可以通过运行npm install --global scrape-it-cli (或yarn global add scrape-it-cli )来安装该模块的CLI版本。
这是一些常见的问题及其答案。
scrape-it只有一个简单的请求模块来提出请求。这意味着您不能直接与Ajax一起解析Ajax页面,但是总的来说,您将拥有这些方案:
scrape-it ajax url(eg example.com/api/that-endpoint ).scrapeHTML方法。没有奇异的方法可以用scrape-it爬网。对于简单的方案,您可以从初始页面中解析URL列表,然后使用承诺来解析每个页面。另外,您可以使用另一个爬网下载网站,然后使用.scrapeHTML方法来刮擦本地文件。
使用.scrapeHTML使用fs.readFile从本地文件中读取HTML。
const scrapeIt = require ( "scrape-it" )
// Promise interface
scrapeIt ( "https://ionicabizau.net" , {
title : ".header h1"
, desc : ".header h2"
, avatar : {
selector : ".header img"
, attr : "src"
}
} ) . then ( ( { data , status } ) => {
console . log ( `Status Code: ${ status } ` )
console . log ( data )
} ) ;
// Async-Await
( async ( ) => {
const { data } = await scrapeIt ( "https://ionicabizau.net" , {
// Fetch the articles
articles : {
listItem : ".article"
, data : {
// Get the article date and convert it into a Date object
createdAt : {
selector : ".date"
, convert : x => new Date ( x )
}
// Get the title
, title : "a.article-title"
// Nested list
, tags : {
listItem : ".tags > span"
}
// Get the content
, content : {
selector : ".article-content"
, how : "html"
}
// Get attribute value of root listItem by omitting the selector
, classes : {
attr : "class"
}
}
}
// Fetch the blog pages
, pages : {
listItem : "li.page"
, name : "pages"
, data : {
title : "a"
, url : {
selector : "a"
, attr : "href"
}
}
}
// Fetch some other data from the page
, title : ".header h1"
, desc : ".header h2"
, avatar : {
selector : ".header img"
, attr : "src"
}
} )
console . log ( data )
// { articles:
// [ { createdAt: Mon Mar 14 2016 00:00:00 GMT+0200 (EET),
// title: 'Pi Day, Raspberry Pi and Command Line',
// tags: [Object],
// content: '<p>Everyone knows (or should know)...a" alt=""></p>n',
// classes: [Object] },
// { createdAt: Thu Feb 18 2016 00:00:00 GMT+0200 (EET),
// title: 'How I ported Memory Blocks to modern web',
// tags: [Object],
// content: '<p>Playing computer games is a lot of fun. ...',
// classes: [Object] },
// { createdAt: Mon Nov 02 2015 00:00:00 GMT+0200 (EET),
// title: 'How to convert JSON to Markdown using json2md',
// tags: [Object],
// content: '<p>I love and ...',
// classes: [Object] } ],
// pages:
// [ { title: 'Blog', url: '/' },
// { title: 'About', url: '/about' },
// { title: 'FAQ', url: '/faq' },
// { title: 'Training', url: '/training' },
// { title: 'Contact', url: '/contact' } ],
// title: 'Ionică Bizău',
// desc: 'Web Developer, Linux geek and Musician',
// avatar: '/images/logo.png' }
} ) ( ) 有几种获得帮助的方法:
scrapeIt(url, opts, cb)人类的刮擦模块。
url :页面URL或请求选项。opts :传递给scrapeHTML方法的选项。cb :回调功能。 data (对象):刮擦数据。$ (功能):Cheeerio函数。如果需要,对DOM进行其他操作可能会很方便。response (对象):响应对象。body (字符串):原始身体作为字符串。scrapeIt.scrapeHTML($, opts)将数据删除在提供的元素中。
有关选择器的格式,请参阅Cheerio库的“选择器”部分
Cheerio $ :输入元素。
对象opts :包含刮擦信息的对象。如果要刮擦列表,则必须使用listItem选择器:
listItem (字符串):列表项目选择器。data (对象):在列表对象中包含的字段:<fieldName> (对象|字符串):选择器或包含的对象:selector (字符串):选择器。convert (函数):可选函数以更改值。how (函数|字符串):访问该值的函数名称。attr (string):如果提供,则将基于属性名称获取该值。trim (布尔值):如果是false ,则不会修剪该值(默认值: true )。closest (字符串):如果提供,则返回给定元素的第一个祖先。eq (数字):如果提供,它将选择第n个元素。texteq (编号):如果提供,它将选择第n个直接文本孩子。深文的儿童选择是不可能的。覆盖how关键。listItem (对象):一个对象,保留listItem对象的递归架构。这可用于创建嵌套列表。例子:
{
articles : {
listItem : ".article"
, data : {
createdAt : {
selector : ".date"
, convert : x => new Date ( x )
}
, title : "a.article-title"
, tags : {
listItem : ".tags > span"
}
, content : {
selector : ".article-content"
, how : "html"
}
, traverseOtherNode : {
selector : ".upperNode"
, closest : "div"
, convert : x => x . length
}
}
}
}如果要从页面收集特定数据,只需使用与data字段相同的模式。
例子:
{
title : ".header h1"
, desc : ".header h2"
, avatar : {
selector : ".header img"
, attr : "src"
}
} 有一个主意吗?找到一个错误?看看如何贡献。
我几乎可以为所有能力开放源,然后尝试回复每个需要使用这些项目帮助的人。显然,这需要时间。您可以免费将这些项目集成并使用这些项目!您甚至可以更改源代码并重新分发(甚至转售)。
但是,如果您从中获得一些盈利,或者只是想鼓励我继续创建东西,那么您几乎可以做到这一点:
主演和分享您喜欢的项目
- 我爱书!如果您给我买了一个,我会记得您。 ?
- 您可以通过PayPal进行一次性捐款。我可能会买咖啡茶。 ?
- 设置一个经常出现的每月捐款,您将获得有关我在做什么的有趣消息(我不与所有人分享的事情)。
比特币- 您可以在此地址向我发送比特币(或扫描下面的代码): 1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6
谢谢! ❤️
如果您在一个项目中使用此库,请在此列表中添加。
3abn@alexjorgef/bandcamp-scraper@ben-wormald/bandcamp-scraper@bogochunas/package-shopify-crawler@lukekarrys/ebp@markab.io/node-api@thetrg/gibson@tryghost/mg-webscraper@web-master/node-web-scraper@zougui/furaffinityairport-clujapixpressbandcamp-scraperbeervana-scraperbible-scraperblankningsregistretblockchain-notifierbrave-search-scrapercamaleoncarirscevo-lookupcnn-marketcodementorcodinglove-scrapercovidaudegusta-scrapperdncliegg-crawlerfa.jsflamescraperfmgo-marketdatagatsby-source-bandcampgrowapihelyesirasjishonjobs-fetcherleximavenmacoolka-net-scrapemacoolka-networkmersul-microbuzelormersul-trenurilormit-ocw-scrapermix-dlnode-red-contrib-getdata-websitenode-red-contrib-scrape-itnurlresolverpaklek-cliparnpicarto-librayko-toolsrs-apisahibindensahibindenServersalesforcerelease-parserscrape-it-cliscrape-vinmonopoletscrapos-workersgdq-collectorsimple-ai-alphaspon-marketstartpage-quick-searchsteam-workshop-scrapertrump-cabinet-picksu-pull-it-ne-parts-finderubersetzungui-studentsearchuniversity-news-notifieruniwue-lernplaetze-scrapervandalen.rhyme.jswikitoolsyu-ncov-scrape-dxy麻省理工学院©离子Bizău