Node.js Scraper для людей.
Спонсируется ❤ by:
Capsolver.com-это услуга с AI, которая специализируется на автоматическом решении различных типов CAPTCHAS. Он поддерживает Captchas, такие как Recaptcha V2, Recaptcha V3, Hcaptcha, Funcaptcha, Dataadome, AWS Captcha, Geetest и Cloudflare Captcha / Challenge 5s, Imperva / Incapsula, среди других. Для разработчиков Capsolver предлагает параметры интеграции API, подробно описанные в их документации, способствуя интеграции разрешения CAPTCHA в приложения. Они также предоставляют расширения браузера для Chrome и Firefox, что позволяет легко использовать их обслуживание непосредственно в браузере. Различные ценовые пакеты доступны для удовлетворения различных потребностей, обеспечивая гибкость для пользователей.
# Using npm
npm install --save scrape-it
# Using yarn
yarn add scrape-it Protip : Вы можете установить версию CLI этого модуля, запустив npm install --global scrape-it-cli (или yarn global add scrape-it-cli ).
Вот некоторые частые вопросы и их ответы.
scrape-it имеет только простой модуль запроса для выполнения запросов. Это означает, что вы не можете напрямую анализировать страницы Ajax с ним, но в целом у вас будут эти сценарии:
scrape-it чтобы называть основной веб-сайт (например example.com/api/that-endpoint пример..scrapeHTML из Scrapape его, как только вы загрузите HTML на странице. Там нет причудливого способа ползать страницами с scrape-it . Для простых сценариев вы можете проанализировать список URL -адресов на начальной странице, а затем, используя обещания, проанализировать каждую страницу. Кроме того, вы можете использовать другой густолет для загрузки веб -сайта, а затем использовать метод .scrapeHTML , чтобы очистить локальные файлы.
Используйте .scrapeHTML чтобы разобрать HTML -чтение из локальных файлов с помощью 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' }
} ) ( ) Есть несколько способов получить помощь:
scrapeIt(url, opts, cb)Модуль соскоба для людей.
url объекта: URL или параметры запроса страницы.opts : варианты, передаваемые методу scrapeHTML .cb : функция обратного вызова. data (объект): скрещенные данные.$ (Функция): функция Cheeerio. Это может быть удобно сделать некоторые другие манипуляции на DOM, если это необходимо.response (объект): объект ответа.body (строка): сырое тело как струна.scrapeIt.scrapeHTML($, opts)Скрабает данные в предоставленном элементе.
Для формата селектора, пожалуйста, обратитесь к разделу Selectors библиотеки Cheerio
Cheerio $ : элемент ввода.
Объект opts : объект, содержащий информацию о царапинге. Если вы хотите соскрести список, вы должны использовать селектор listItem :
listItem (String): селектор элементов списка.data (объект): поля для включения в объекты списка:<fieldName> (объект | String): селектор или объект, содержащий:selector (строка): селектор.convert (функция): необязательная функция для изменения значения.how (функция | String): имя функции или функции для доступа к значению.attr (String): если предоставлено, значение будет принято на основе имени атрибута.trim (BOOLEAN): Если false , значение не будет обрезано (по умолчанию: true ).closest (строка): если предоставлен, возвращает первый предок данного элемента.eq (номер): если предоставлено, он выберет nth -элемент.texteq (номер): если предоставлено, он выберет nth Direct Text child. Глубокий текстовый выбор ребенка еще невозможен. Перезаписывает, how ключ.listItem (Object): объект, сохраняя рекурсивную схему объекта 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-dxyMIT © Ionică Bizău