Ein Node.js -Schaber für Menschen.
Gesponsert mit ❤️ von:
Capsolver.com ist ein KI-betriebener Service, der sich auf die automatische Lösung verschiedener Arten von Captchas spezialisiert hat. Es unterstützt Captchas wie Recaptcha V2, Recaptcha V3, Hcaptcha, Funcaptcha, Datadome, AWS Captcha, Geetest und CloudFlare Captcha / Challenge 5S, Imperva / Incaptula. Für Entwickler bietet Capsolver API -Integrationsoptionen an, die in ihrer Dokumentation detailliert detailliert sind, und erleichtert die Integration der CAPTCHA -Lösung in Anwendungen. Sie bieten auch Browserverlängerungen für Chrome und Firefox, so dass es einfach ist, ihren Service direkt in einem Browser zu nutzen. Es stehen verschiedene Preispakete zur Verfügung, um unterschiedliche Anforderungen zu erfüllen und die Flexibilität für Benutzer zu gewährleisten.
# Using npm
npm install --save scrape-it
# Using yarn
yarn add scrape-it Protip : Sie können die CLI-Version dieses Moduls installieren, indem npm install --global scrape-it-cli (oder yarn global add scrape-it-cli ) ausführen.
Hier sind einige häufige Fragen und ihre Antworten.
scrape-it verfügt nur über ein einfaches Anforderungsmodul zum Erstellen von Anfragen. Das heißt, Sie können Ajax -Seiten nicht direkt mit ihm analysieren, aber im Allgemeinen haben Sie diese Szenarien:
scrape-it die AJAX-URL (z example.com/api/that-endpoint.scrapeHTML Es gibt keine ausgefallene Möglichkeit, Seiten mit scrape-it zu kriechen. Für einfache Szenarien können Sie die Liste der URLs von der Anfangsseite analysieren und dann jede Seite mit Versprechen analysieren. Außerdem können Sie einen anderen Crawler verwenden, um die Website herunterzuladen und dann die .scrapeHTML -Methode zu verwenden, um die lokalen Dateien zu kratzen.
Verwenden Sie das .scrapeHTML , um die HTML -Lesung mit fs.readFile aus den lokalen Dateien zu analysieren.
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' }
} ) ( ) Es gibt nur wenige Möglichkeiten, Hilfe zu bekommen:
scrapeIt(url, opts, cb)Ein Kratzmodul für Menschen.
url : Die Seiten -URL- oder Anforderungsoptionen.opts : Die Optionen, die an scrapeHTML -Methode übergeben wurden.cb : Die Rückruffunktion. data (Objekt): Die abgekratzten Daten.$ (Funktion): Die Cheeerio -Funktion. Dies kann bei Bedarf praktisch sein, um eine andere Manipulation auf dem DOM durchzuführen.response (Objekt): Das Antwortobjekt.body (Schnur): Der rohe Körper als Schnur.scrapeIt.scrapeHTML($, opts)Kratzt die Daten im bereitgestellten Element.
Für das Format des Selektors finden Sie im Abschnitt Selektoren der Cheerio -Bibliothek
Cheerio $ : Das Eingabelement.
Objekte opts : Ein Objekt, das die Scraping -Informationen enthält. Wenn Sie eine Liste kratzen möchten, müssen Sie den listItem -Selektor verwenden:
listItem (Zeichenfolge): Der Listenelement -Selektor.data (Objekt): Die Felder, die in die Listenobjekte aufgenommen werden sollen:<fieldName> (Objekt | String): Der Selektor oder ein Objekt, das:selector (Zeichenfolge): Der Selektor.convert (Funktion): Eine optionale Funktion, um den Wert zu ändern.how (Funktion | String): Ein Funktions- oder Funktionsname, um auf den Wert zuzugreifen.attr (String): Wenn angegeben, wird der Wert basierend auf dem Attributnamen eingenommen.trim (boolean): Wenn false , wird der Wert nicht beschnitten (Standard: true ).closest (Zeichenfolge): Wenn er zur Verfügung gestellt wird, gibt der erste Vorfahr des angegebenen Elements zurück.eq (Nummer): Wenn angegeben, wird das n -te Element ausgewählt.texteq (Nummer): Wenn angegeben, wird das n -te direkte Textkind ausgewählt. Eine tiefe Textauswahl für Kinder ist noch nicht möglich. Überschreibt den how -Key.listItem (Objekt): Ein Objekt, das das rekursive Schema des listItem -Objekts behält. Dies kann verwendet werden, um verschachtelte Listen zu erstellen.Beispiel :
{
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
}
}
}
} Wenn Sie bestimmte Daten von der Seite sammeln möchten, verwenden Sie einfach das gleiche Schema, das für das data verwendet wird.
Beispiel :
{
title : ".header h1"
, desc : ".header h2"
, avatar : {
selector : ".header img"
, attr : "src"
}
} Eine Idee haben? Einen Fehler gefunden? Sehen Sie, wie man einen Beitrag leisten.
Ich bin fast alles, was ich kann, und ich versuche, auf alle zu antworten, die Hilfe mit diesen Projekten benötigen. Offensichtlich braucht das Zeit. Sie können diese Projekte kostenlos in Ihre Anwendungen integrieren und verwenden! Sie können sogar den Quellcode ändern und den Umverteilungsverteiler weitervergeben (sogar weiterverkaufen).
Wenn Sie jedoch einen gewissen Gewinn daraus machen oder mich nur dazu ermutigen möchten, weiter zu erstellen, können Sie es nur wenige Möglichkeiten machen:
Darstellung und Teilen der Projekte, die Sie mögen
- Ich liebe Bücher! Ich werde mich nach Jahren an dich erinnern, wenn du mir einen kaufst. ?
-Sie können einmalige Spenden über PayPal tätigen. Ich werde wahrscheinlich eine kaufen Kaffee Tee. ?
- Setzen Sie eine wiederkehrende monatliche Spende und Sie erhalten interessante Neuigkeiten darüber, was ich tue (Dinge, die ich nicht mit allen teile).
Bitcoin - Sie können mir Bitcoins an diese Adresse senden (oder den folgenden Code scannen): 1P9BRsmazNQcuyTxEqveUsnf5CERdq35V6
Danke! ❤️
Wenn Sie diese Bibliothek in einem Ihrer Projekte verwenden, fügen Sie sie in diese Liste hinzu.
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