Привет, Хаброжители!

Недавно мы выпустили «Парсинг с помощью Python. Веб-скрапинг в действии», поэтому хотим поделиться рассказом об этой книге, который написал для своего блога на Medium Серхио Рамос.
Приятного чтения!
image


Преамбула


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

В частности, я выполнил проект по веб-скрапингу. Я создал на Python такой скрипт, который извлекал из приложения или сайта спланированную для меня диету, после чего преобразовал эту информацию в Word-документ. С таким документом мне было легко сверяться в течение недели.

На тот момент я не представлял, что делаю. Я просто искал и искал в Интернете ответы на конкретные вопросы, требовавшиеся мне для решения задач — и наткнулся на рабочий код (большое спасибо автору, код работает до сих пор).

Долгое время я не мог понять, почему у меня всё время возникают определённые проблемы с веб-скрапингом, даже не понимал, какие приёмы стоит изучить и какие инструменты освоить.
Я как и раньше просматривал контент в браузере, но не в BeautifulSoup, либо глядел во вкладку «Инструменты разработчика», ломая голову, что же значит весь этот HTML, и какие именно элементы я должен выбрать.

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

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

После некоторых поисков я нашёл книгу «Парсинг с помощью Python. Веб-скрапинг в действии» Райана Митчелла.

В этой книге нашлось всё, что я искал! В ней обещалось полное сквозное объяснение веб-скрапинга и обзор практик, связанных с этим методом.

Последние пару месяцев я читал её и теперь хочу поделиться с вами мыслями, на которые она меня навела.

Для кого эта книга


В самом начале книги автор чётко указывает, что книга не подойдёт читателю, который не ориентируется в программировании и/или Python.

В книге активно используются объекты и функции, а также библиотеки, относящиеся к Python.

Притом, что я твёрдо уверен, что ценную информацию можно извлечь откуда угодно, независимо от уровня вашей подготовки, лучше действительно иметь в арсенале пройденный «курс молодого бойца» по Python, прежде, чем углубляться в эту книгу.

Упомяну ещё две книги, которые я также прочитал, и которые, как мне кажется, особенно помогут вам подготовиться к изучению «Парсинг с помощью Python. Веб-скрапинг в действии»:
  1. Автоматизация рутинных задач с помощью Python. Практическое руководство для начинающих Эла Свейгарта
  2. Python. Чистый код для продолжающих Эла Свейгарта.

В первой рассмотрены основы языка Python, а также многие библиотеки для автоматизации задач — в том числе, и та, которой я пользовался при работе с Word.

Во второй книге рассматривается объектно-ориентированное программирование с точки зрения Python, а также наилучшие практики, при помощи которых у вас получится чистый «питонический» код.

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

Что мне понравилось


Отлично объяснена теория
В книге блестяще объяснены основополагающие концепции, история и теория.

Я приятно удивился тому, насколько исчерпывающая работа была проделана, чтобы как следует раскрыть тему.

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

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

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

Есть разделы о веб-сайтах и сторонних провайдерах, оказывающих услуги веб-скрапинга — я нашёл эту информацию крайне полезной.

Бонусные темы
Автор обсуждает моделирование и очистку данных, рассказывает, как настроить Python и подключить его к MySQL; тут же идут примеры кода, описывающие чтение базы данных и запись в неё при выполнении веб-скрапинга.

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

Книга касается и некоторых неожиданных, но увлекательных тем — например, истории кодировок, и рассказывает, чем отличаются такие форматы как ASCII, UNICODE и UTF.

Есть глава о приёмах обработки естественного языка, очень важная в современных условиях, когда мы наблюдаем, как растёт пузырь генеративного ИИ. Здесь вы прочтёте о биграммах, марковских цепях и лексикографическом анализе с применением Python-библиотеки NLTK.

В будущем этот раздел непременно станет для меня справочным, так как в нём приведены отличные примеры кода для очистки текста, удаления частотных слов, а также для анализа паттернов в текстах.

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

Анализ текстов иногда очень помогает. Например, в будущем я собираюсь проанализировать книги из моего списка «Надо прочитать». Если удалять распространённые слова и анализировать, как часто другие слова встречаются в названиях книг, то можно составить впечатление о том, какие темы меня наиболее интересуют.

Что меня не устроило


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

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

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


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

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

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

Структура контента
Думаю, что можно было бы пересмотреть порядок следования глав, а некоторые главы — переосмыслить, чтобы читатель последовательно двигался от самых лёгких проектов ко всё более сложным.

В примерах кода автор склонен демонстрировать только новые концепции, а не комбинировать их с материалом, рассмотренным в более ранних главах.

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

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

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

Кроме того, как известно, код может устаревать. Поэтому я хотел бы посмотреть полные версии тех скриптов, при помощи которых автор собирал информацию с таких популярных сайтов как Amazon и т.п. Думаю, даже в чисто справочной книге это было бы ценное дополнение.

Думаю, рассмотренным в книге предметом более чем активно занимаются фрилансеры, поэтому, определённо, кто-то из них мог бы отрефакторить этот код и поделиться им с нами, читателями.

Полагаю, что главы о хранении данных, анализе естественного языка и некоторые другие темы следует сдвинуть к концу книги. Хотя, я представляю, чем можно аргументировать и их текущее расположение.

Чем можно было бы дополнить книгу


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

Также думаю, что среди представленных инструментов сильно не хватает «Google-таблиц».

В Google-таблицах есть несколько функций, поддерживающих веб-скрапинг. Так, с их помощью я научился вытягивать данные из видеороликов с TikTok!

Иногда бывает быстрее и проще закинуть функцию и подтянуть данные непосредственно в таблицу, поскольку именно в таблице эти данные в конечном итоге и окажутся.

Вот несколько примеров, как выглядят функции на практике, при условии, что в столбце B у вас проставлены URL видео.

Комментарии:
 =IFERROR(IMPORTXML($B2, "//strong[@data-e2e='comment-count']"), "N/A")

Лайки:
=IFERROR(IMPORTXML($B2, "//strong[@data-e2e='like-count']"),"N/A")

Закладки:
=IFERROR(IMPORTXML($B2, "//strong[@data-e2e='undefined-count']"), "N/A")


Заключение


Если вы знаете Python и хотите научиться веб-скрапингу, то просто обязаны приобрести эту книгу.

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

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

Книга послужит вам удобным справочником на случаи, когда вы столкнётесь с какими-либо сложностями в проектах по веб-скрапингу. Здесь вы найдёте ключевые слова, которые выведут вас на более подробную информацию.

Веб-скрапинг – ценный навык, и эта книга поможет вам начать путь к созданию вашего первого собственного веб-скрапера!

Познакомиться поближе с книгой «Парсинг с помощью Python. Веб-скрапинг в действии» вы можете на нашем сайте

» Оглавление
» Отрывок

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Парсинг

Комментарии (0)