一個節點。
由❤️贊助:
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