Un grattoir Node.js pour les humains.
Parrainé avec ❤️ par:
Capsolver.com est un service alimenté par AI qui se spécialise automatiquement dans la résolution de différents types de captchas. Il prend en charge les captchas tels que Recaptcha V2, RecaptCha V3, HCAPTCHA, FuncaptCHA, DataDome, AWS Captcha, Geetest et CloudFlare Captcha / Challenge 5S, Imperva / Incapsula, entre autres. Pour les développeurs, Capsolver propose des options d'intégration API détaillées dans leur documentation, facilitant l'intégration de la résolution de CAPTCHA dans les applications. Ils fournissent également des extensions de navigateur pour Chrome et Firefox, ce qui facilite l'utilisation de leur service directement dans un navigateur. Différents forfaits de tarification sont disponibles pour répondre à des besoins variables, garantissant la flexibilité des utilisateurs.
# Using npm
npm install --save scrape-it
# Using yarn
yarn add scrape-it Protip : Vous pouvez installer la version CLI de ce module en exécutant npm install --global scrape-it-cli (ou yarn global add scrape-it-cli ).
Voici quelques questions fréquentes et leurs réponses.
scrape-it n'a qu'un simple module de demande pour faire des demandes. Cela signifie que vous ne pouvez pas analyser directement les pages Ajax, mais en général, vous aurez ces scénarios:
scrape-it l'URL AJAX (par exemple example.com/api/that-endpoint ) et vous serez en mesure d'analyser la réponse.scrapeHTML de la gratter une fois que vous obtenez le HTML chargé sur la page. Il n'y a pas de façon sophistiquée de ramper les pages avec scrape-it . Pour des scénarios simples, vous pouvez analyser la liste des URL à partir de la page initiale, puis, en utilisant les promesses, analyser chaque page. En outre, vous pouvez utiliser un différend différent pour télécharger le site Web, puis utiliser la méthode .scrapeHTML pour gratter les fichiers locaux.
Utilisez le .scrapeHTML pour analyser la lecture HTML à partir des fichiers locaux à l'aide de fs.readFile .
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' }
} ) ( ) Il existe peu de façons d'obtenir de l'aide:
scrapeIt(url, opts, cb)Un module de grattage pour les humains.
url de l'objet: URL de page ou de demande.opts : les options transmises pour scrapeHTML Méthode.cb : La fonction de rappel. data (objet): les données grattées.$ (Fonction): la fonction Cheeerio. Cela peut être pratique pour faire une autre manipulation sur le DOM, si nécessaire.response (objet): l'objet de réponse.body (chaîne): le corps brut comme une chaîne.scrapeIt.scrapeHTML($, opts)Arrondit les données dans l'élément fourni.
Pour le format du sélecteur, veuillez vous référer à la section des sélecteurs de la bibliothèque Cheerio
Cheerio $ : l'élément d'entrée.
Objet opts : un objet contenant les informations de grattage. Si vous souhaitez gratter une liste, vous devez utiliser le sélecteur listItem :
listItem (String): le sélecteur d'élément de liste.data (objet): les champs à inclure dans les objets de liste:<fieldName> (Objet | String): le sélecteur ou un objet contenant:selector (chaîne): le sélecteur.convert (fonction): une fonction facultative pour modifier la valeur.how (fonction | chaîne): un nom de fonction ou de fonction pour accéder à la valeur.attr (String): Si fourni, la valeur sera prise en fonction du nom d'attribut.trim (Boolean): Si false , la valeur ne sera pas coupée (par défaut: true ).closest (chaîne): si fourni, renvoie le premier ancêtre de l'élément donné.eq (numéro): s'il est fourni, il sélectionnera le nième élément.texteq (numéro): s'il est fourni, il sélectionnera le nième enfant de texte direct. La sélection des enfants en texte profond n'est pas encore possible. Écrase le how clé.listItem (objet): un objet, en gardant le schéma récursif de l'objet listItem . Cela peut être utilisé pour créer des listes imbriquées.Exemple :
{
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
}
}
}
} Si vous souhaitez collecter des données spécifiques à partir de la page, utilisez simplement le même schéma utilisé pour le champ data .
Exemple :
{
title : ".header h1"
, desc : ".header h2"
, avatar : {
selector : ".header img"
, attr : "src"
}
} Vous avez une idée? Vous avez trouvé un bug? Voyez comment contribuer.
J'ouvrive presque tout ce que je peux, et j'essaie de répondre à tous ceux qui ont besoin d'aide en utilisant ces projets. De toute évidence, cela prend du temps. Vous pouvez intégrer et utiliser ces projets dans vos applications gratuitement ! Vous pouvez même modifier le code source et redistribuer (même le revendre).
Cependant, si vous en tirez un profit ou si vous voulez simplement m'encourager à continuer de créer des choses, il y a peu de façons de le faire:
Mettant en vedette et partageant les projets que vous aimez
- j'aime les livres! Je me souviendrai de vous après des années si vous m'en achetez un. ?
- Vous pouvez faire des dons uniques via PayPal. J'achèterai probablement un café thé. ?
—Sésignez un don mensuel récurrent et vous obtiendrez des nouvelles intéressantes sur ce que je fais (des choses que je ne partage pas avec tout le monde).
Bitcoin - Vous pouvez m'envoyer des bitcoins à cette adresse (ou scanner le code ci-dessous): 1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6
Merci! ❤️
Si vous utilisez cette bibliothèque dans l'un de vos projets, ajoutez-le dans cette liste.
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-dxyMit © ionică bizău