Изучение Web scraping

Посоветуйте, пожалуйста, литературу для изучения данного направления (с чего лучше начать). Возможно, также, есть какие-либо полезные видео-материалы по этой теме.
Заранее спасибо за ответы.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Не думаю, що тут варто зациклюватися на специфічних курсах. Достатньо знати як працює web, вміти писати хитрі css-селектори і трішки впертості. У web scraping багато чого залежить від конкретної задачі (які сайти потрібно парсити, як часто, який об’єм даних потрібний, CSR чи SSR, наявність захисту на сайтах). Найбільше інструментів для scraping, напевно, на Python.

Якщо цікавить Node.js, то набір інструментів

  1. для server-side rendering
    • Будь-який інструмент для http-запитів (fetch, axios)
    • jsdom чи cheerio (якщо ближчий синтаксис jquery) для парсингу html
  2. Для client-side rendering
    • puppeter
    • Як можлива альтернатива puppeter — playwright на практиці ще не пробував.

З власного досвіду, особливо, якщо на сайті csr, варто добре вивчити можливість витягування даних з API, перш ніж використовувати puppeter. puppeter — інструмент потужний, але, водночас, ресурсозатратний. Якщо
потрібно скрейпити дуже велику кількість сторінок, то це займе досить багато часу. Також, якщо доведеться використовувати проксі, то кожний файл буде використовувати окремий запит через проксі, що значно дорожче ніж у випадку із ssr.

—> Beautiful Soup

Не перестаю удивляться количеству парсеров xml в питоне кому оно реально упало ? Когда пока еще ни один не переплюнул по возможностям libxml ума не приложу. Уже со счета сбился сколько разных наколенных либ встречалось.

Scrapy просто огонь! На юдеми есть курсы, советую

Вопрос задан некорректно. Ответ очень зависит в первую очередь от ваших «амбиций». Стащить пару статей с пары новостников — это web scraping, и проиндексировать пол-веба — это тоже web scraping, но таки есть некоторая разница :) Для первого ничего не нужно учить — нагуглите какой-нить готовый инструмент (octoparse etc — имя им легион) и всё.

Если вы имеете в виду больше второе (в более скромных масштабах, разумеется), то вот есть такая книжонка ruby.bastardsbook.com/toc Очень древняя и дико устаревшая (при том, что никогда и не была толком завершена), но ее основной плюс — фокус как раз на парсинге. Если вы не знаете вообще ничего, то может быть окей следовать в этом фарватере и догугливать остальное по факту появления вопросов и проблем. К сожалению, там упущены целые пласты проблем, с которыми вы столкнетесь с реальным парсером (от инструментов типа капибары/watir’a и мелких прикладных вещей типа необходимости использовать прокси, пробивать капчи и т.п. до намного более серьезных архитектурных вопросов), но уж что есть, то есть. Для основательного изучения ни программирования вообще, ни руби в частности это рекомендовать ни в коем случае нельзя, но если вы хотите вот прямо завтра сесть с нулем знаний и через месяцок получить кое-как через пень-колоду работающий краулер — должно быть ок. Ваши знания в результате будут дико фрагментарны — я предупредил :)

З.Ы. ЯП особого значения не имеет.

Спасибо за рекомендации :) Приму во внимание)

Ухты, оказывается есть стековерфлоу на русском?

оказывается

У кого то самоизоляция началась раньше и включала в себя интернеты :)

в зависимости от яп выбираете инструмент
руби — nokogiri, kimurai итд
питон — bs4, scrapy, lxml итд
перл — тоже какие-то инструменты популярные
пхп — туда же
жс — туда же
на всем остальное смысла пробовать нет. лучший вариант на текущий день — питон.
сюда же плюсуйте всякие либы по типу реквеста, регекса, селениума.
это что касается инструментов, а дальше там поле непаханное чего надо уметь\знать.
начните с этого
automatetheboringstuff.com/2e/chapter12
стоящих книг единицы, 99% всех книг по веб скрепинг\кроулингу\дата экстракшн — индусский мусор(вот эти все пестрые пактовские книги). курсы как правило бесполезны и однообразны. все познается из блогов\знакомств\документации и набивая попутно шишки. да вы даже можете что-то подчерпнуть элементарно читая книги по другим доменам.
для начала попробуйте сделать из книги выше, потом пройтись по курсу
www.coursera.org/learn/python-for-web
до части с джанго, но он не для полных новичков, как раз еще прикрутите прокси для доступа к мейл ру сервисами
скрэпи туториал можете глянуть
docs.scrapy.org/...​atest/intro/tutorial.html

Я б взяв пітон, так як він дефолтний для скриптування на сервері.

да на него элементарно больше инструментов, гайдов и там удобнее работать с сырыми данными.

Я б взяв пітон

у якості SSR?

сучасний Web scraping — це по суті та ж сама задача — SSR for SPA

всегда — бывает только в математике

Останній раз займався дрібним парсингом років 5 назад. Тоді ще спа не було, і без жс норм парсилося з пхп(з сайд реквестами звісно).

років 5 назад. Тоді ще спа не було

а я «вчора» займався

і без жс норм парсилося з пхп

давайте ще про паскаль 5.0 роскажіть, як один добродій нещодавна ділився
то такої ж актуальності інформація та поради :)

а я не здивуюся якщо не тільки ми — а й нас вже скаплять.

у нас SPA, API захищено. Публічного не плануємо.
Цінна інфа — вже є, для нашого домена.
Бо частково ми її купуємо.
Частково добираємо те що поки не продається, бо немає цінності для інших, а наша бізнес логіка має деякі унікальні характеристики, і потребує її. це дещо ще й не структуроване та неповне, і збирається з декількох місць.
Частково — генеруємо.

поки не моніторили, не критично.

але телепати все вже знають краще.

в зависимости от яп

не-а
на сайтах тьма js. не выполнив их все в браузере — вы не получите итоговой страницы

только в простых случаях, которых — все меньше.

на сайтах тьма js. не выполнив их все в браузере — вы не получите итоговой страницы

брэхня, в половине случаев данные можно вытянуть даже ничего не подгрузив. через умелый пост\гет или апи.

только в простых случаях, которых — все меньше.

брэхня, такой работы как раз больше всего.
да и для таких случаев используется хедлесс селениум в связке все с тем же скрэпи, или отдельно скрепи сплеш, если там не забористый жс.

брэхня

ну, вам видней зачем нам понадобилось описанное решение

через умелый пост\гет или апи.

когда апи отсутствует и гет вернет на линк загрузки бандла на 400к сжатого js

вам виднее конечно

ну, вам видней зачем нам понадобилось описанное решение

вы пытаетесь обобщить частное.

вам виднее конечно

я в этом уверен.

я в этом уверен.

телепатия да, Дар.

вы пытаетесь обобщить частное.

я всего лишь привел типичное сейчас решение для большинства случаев, и простых, в виде чистого html и посложнее
при этом которое делается на коленке.
и которое, в силу большого покрытия случаев — «работает и забыли как оно там работает»

и проверено на практике в нашем конкретном случае

а дело топикастера выбирать из предложенного.
подробности зачем понадобилось мне неизвестны.

а то что всяк телепат знает лучше как надо было — это конечно, это обязательно.

телепатия да, Дар.

не дар, а опыт.

я всего лишь привел типичное сейчас решение для большинства случаев, и простых, в виде чистого html и посложнее

чистый хтмл можно вообще чем угодно стянуть и распарсить, для этого не нужен ноджс.

чистый хтмл

это

, а опыт.

в 2020ом году?

отлючите в своем браузере js — и поживите с недельку

отлючите в своем браузере js — и поживите с недельку

регулярно это делаю.

А что именно интересует?

там обычно так
загоняете в докер:
package.json
{ «dependencies»: { «puppeteer»: «^2.1.0» } }

пишите app.js, на 64 строчки у нас

и дергайте себе с любого ЯП, и бегайте по полученному ответу каким-нить DOMXPath

нюансы конечно есть
но их освоение имеет смысл когда сделаете первый работающий вариант.

пишите app.js, на 64 строчки у нас

А скільки рядків в ноде.жс і сотнях депенденсів які тягнуться на будь-який чих?

и дергайте себе с любого ЯП

Навіщо жс прослойка?

А скільки рядків в ноде.жс і сотнях депенденсів які тягнуться на будь-який чих?

на сервері місця достатньо.
не дивився навіть.

Навіщо жс прослойка?

single responsibility

сервісу що формує закінченний html — не потрібно знати навіщо, кому цей html потрібен

single responsibility

сервісу що формує закінченний html — не потрібно знати навіщо, кому цей html потрібен

До чого тут парсинг? Сервіс в базу пише(або в файли джейсоном). А потім як воно репрезентується справа десята, і яким шаблонізатором. Тут пряма робота з даними, де жс не є необхідністю.

До чого тут парсинг?

Веб-скрейпинг (или скрепинг, или скрапинг← англ. web scraping) — это технология получения веб-данных путем извлечения их со страниц веб-ресурсов. Веб-скрейпинг может быть сделан вручную пользователем компьютера, однако термин обычно относится к автоматизированным процессам, реализованным с помощью кода, который выполняет GET-запросы на целевой сайт.

Веб-скрейпинг используется для синтаксического преобразования веб-страниц в более удобные для работы формы. Веб-страницы создаются с использованием текстовых языков разметки (HTML и XHTML) и содержат множество полезных данных в коде. Однако большинство веб-ресурсов предназначены для конечных пользователей, а не для удобства автоматического использования, поэтому была разработана технология, которая «очищает» веб-контент.

Загрузка и просмотр страницы — важнейшие составляющие технологии, они являются неотъемлемой частью выборки данных.
...
В основном веб-скрейперы решают следующие задачи:
Поиск необходимой информации;
Копирование данных из Интернета;
Мониторинг обновлений на сайтах.
(вики)

Зрозумів, дякую. Вся суть в сервер рендерингу пейджа, щоб потім розбирати думхтмл тулсом.

ну может тут речь о скрапинге коммерческого уровня, а там люди движки год-другой пишут, а не 64 строки.

если это серьезный проект, то там запросто может просто стоять какая-то имперва. в таком случае будет дешевле нанять индуса шоб он сам все руками копировал...
коммерческий уровень требует коммерческого подхода и без вливания средств на серьезные инструменты тут не обойтись.
как правило крупные данные просят забрать с каких-то старых, как говно мамонта, сайтов с табличной версткой и с самой простой пагинацией.

как правило крупные данные просят забрать с каких-то старых, как говно мамонта, сайтов с табличной версткой и с самой простой пагинацией.

самая частая задача
стянуть прайсы
потом идет
«объявления с olx»
потом
данные за которые не хочется платить

наверное бывает что и с древних сайтов что-то нужно.
всякое бывает.

но обычно все-таки — интересует свежайшая информация

но обычно все-таки — интересует свежайшая информация

а кто сказал, что на таких сайтах не свежая информация?

а кто сказал, что на таких сайтах не свежая информация?

да так, догадки
если у владельцев не хватило денег на сезонное обновление сайта
то врядли у них есть ценная свежая информация которая интересна.

но, конечно, всяко бывает.

то врядли у них есть ценная свежая информация которая интересна.

а кто решает, что есть ценная и интересная информация?
вы ради интереса поинтересуйтесь проектами за пределами украины. понятно, что стянуть прайсы и обьявления олх — предел мечтаний, но во всем остальном мире задач «немного» поболее.

а кто решает, что есть ценная и интересная информация?

бизнес

вы ради интереса поинтересуйтесь проектами за пределами украины

мы тянем с американских и европейских сайтов.

но во всем остальном мире задач «немного» поболее.

конечно поболе
есть еще — агрегаторы чего-нить.
любимая тема в стартапах.

правило ж Паретто приблизительно и тут работает
описать остальные 20% случаев — это будет очень много текста

есть еще — агрегаторы чего-нить.

за которые можно как минимум получить штраф или присесть. сразу отказываю таким. как и в случае с украинскими хакерами — скрепинг бывает наказуем, порой даже безобидный.

за которые можно как минимум получить штраф или присесть.

можно.

скрепинг бывает наказуем, порой даже безобидный.

совершенно верно.

но мы же пока о технической стороне дела говорили, а не о том что «Web scraping» это очень часто когда «бизнесмен» решил сэкономить на платном доступе к публичному API

так я о технической и говорю.

вы перевели разговор на юридически нравственный аспект, а не технический

и о том что ваш опыт релевантней моего :)
ну то такое, проверить невозможно, ни мой, ни ваш

ну если вы не умеете в логические выводы, то я ничем помочь не могу. вытаскивайте дальше хтмл и «посложнее» с помощью 64 строчек на жс.

ну если вы не умеете в логические выводы

и где и какую логику вы изучали?

вытаскивайте дальше хтмл и «посложнее» с помощью 64 строчек на жс.

спасибо что разрешили. а то мы поседели уже всей командой, локти искускали: а вдруг знатоки какие в интернетах будут фыркать?

индуса шоб он сам все руками копировал...

без индусов, конечно, и не обойтись ибо капчу распознать не всегда можно и при настойчивости может IP воркера улететь в бан, но там надо пол Индии нанимать, чтобы за сутки держать свежими данные с сотни- другой тысяч страниц.

с каких-то старых, как говно мамонта

Это хоть куда дешевле по ресурсам, а так жгутся кучи воркеров, чтобы имитировать хомячка в браузере, ненавязчиво забирая данные с нужных мест.

потому и спросил, что именно интересует

а если не написать свой на 64 строчки плюс далее собственно простенький бизнес парсер — то читай не читай
там же сплошные частности, в завимости от сайта и зачем вам и какая с него инфа

Подписаться на комментарии