Рубрики
Без рубрики

Простое введение в сеть соскабливание с Python

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Web Scraping – это то, где программист будет писать приложение для загрузки веб-страниц и из них из них анализируют конкретную информацию. Обычно, когда вы выскаравляете данные, вам нужно будет навигаться на веб-сайте программно. В этой главе мы узнаем, как скачать файлы из Интернета и разбирать их, если это нужно. Мы также узнаем, как создать простой паук, который мы можем использовать для ползания сайта.

Советы для соскабливания

Есть несколько советов, которые нам нужно перейти, прежде чем мы начнем соскоб.

  • Всегда проверяйте Условия и условия сайта до Вы соскребаете их. У них обычно есть термины, которые ограничивают, как часто вы можете соскребать или что вы можете соскребать
  • Поскольку ваш сценарий будет работать намного быстрее, чем человек, который может просматривать человека, убедитесь, что вы не забиваете свой веб-сайт с большим количеством запросов. Это может даже быть охвачено условиям сайта.
  • Вы можете воспользоваться юридическими проблемами, если вы перегружете веб-сайт с вашими запросами или попытаетесь использовать его таким образом, который нарушает условия, которые вы согласились.
  • Сайты меняются все время, поэтому ваш скребок сломается на несколько дней. Знайте это: вам придется поддерживать свой скребок, если хотите, чтобы он продолжал работать.
  • К сожалению, данные, которые вы получаете от сайтов, могут быть беспорядком. Как и в случае любых действий по разборке данных, вам нужно будет очистить его, чтобы сделать его полезным для вас.

С этим с пути, давайте начнем соскабливать!

Подготовка к Scrape

Прежде чем мы сможем начать соскоб, нам нужно выяснить, что мы хотим сделать. Мы будем использовать мой блог для этого примера. Наша задача будет соскребаться названия и ссылки на статьи на первой странице этого блога. Вы можете использовать Python’s Urllib2 Модуль для загрузки HTML, который нам нужно разбирать или использовать Запросы библиотека. Для этого примера я буду использовать запросы.

Большинство сайтов в настоящее время имеют довольно сложный HTML. К счастью, большинство браузеров предоставляют инструменты, чтобы сделать выяснение, где элементы веб-сайта довольно тривиальными. Например, если вы открываете свой блог в Chrome, вы можете щелкнуть правой кнопкой мыши по любому из названий статей и нажмите на Проверять Опция меню (см. Ниже):

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

Mozilla Firefox Browser имеет инструменты разработчика, которые вы можете включить на основе на странице, который включает в себя инспектор, который вы можете использовать почти так же, как мы делали в Chrome. Независимо от того, какой веб-браузер вы в конечном итоге используете, вы быстро увидите, что H1 Тег – это тот, который нам нужно для поиска. Теперь, когда мы знаем, что мы хотим разбираться, мы можем научиться этому!

Beautifulsoup

Один из самых популярных препаратов HTML для Python называется Beautifulsoup Отказ Это было вокруг довольно какое-то время и известно, что способны обращаться с уродливым HTML хорошо. Чтобы установить его для Python 3, все, что вам нужно сделать, это следующее:

Если все работало правильно, теперь вы должны быть установлены красивые. При прохождении BeautifulSoup есть HTML для анализа, вы можете указать строитель дерева. Для этого примера мы будем использовать HTML.Parser , потому что он включен в Python. Если вы хотите что-то быстрее, вы можете установить LXML.

Давайте на самом деле посмотрим на какой-то код, чтобы увидеть, как это все работает:

Здесь мы выделяем импорт и настроив, какой URL мы собираемся использовать. Тогда мы создаем функцию, где происходит волшебство. Мы используем библиотеку запросов, чтобы получить URL-адрес, а затем вытащить HTML в виде строки с помощью объекта запроса текст имущество. Затем мы передаем HTML для Beautifulsoup, которая превращает его в хороший объект. После этого мы просим Beautifulsoup найти все экземпляры H1 а затем используйте словарное понимание для извлечения заголовка и URL. Затем мы распечатаем эту информацию в STDOUT и вернуть словарь.

Давайте попробуем соскребать другой сайт. На этот раз мы рассмотрим Twitter и используем учетную запись моего блога: mousevspython. Мы постараемся соскребать то, что у меня недавно в Твиттере. Вам нужно будет выполнить те же шаги, что и раньше, щелкнув правой кнопкой мыши на Tweet и проверяя его, чтобы выяснить, что нам нужно сделать. В этом случае нам нужно искать тег Li ‘Li’ и класс js-потока. Давайте посмотрим:

Как и прежде, мы используем Beautifulsoup’s Findall Команда, чтобы взять все экземпляры, которые соответствуют нашим критериям поиска. Затем мы также ищем тег абзаца (I.E. ‘p’) и Tweettextsize класс и петля по результатам. Вы отметите, что мы использовали Find_all здесь. Также мы ясны, findall – псевдоним okn_all, поэтому они делают то же самое. Во всяком случае, мы связываемся над этими результатами и захватываем текст Tweet и Tweet Timestamp и распечатайте их.

Вы бы подумали, что может быть проще такой способ сделать эту вещь, и есть. Некоторые веб-сайты предоставляют API разработчика, который вы можете использовать для доступа к данным их веб-сайта. У Twitter есть хороший, который требует потребительского ключа и секрет. Мы фактически смотрим, как использовать эту API и пару других в следующей главе.

Давайте перейдем и научитесь написать паук!

Снапировка

SCRAPY – это фреймворк, которую вы можете использовать для выполнения веб-сайтов и извлечения данных (I.e. Scraping). Он также может быть использован для извлечения данных через API веб-сайта или в качестве веб-сканера общего назначения. Чтобы установить сценапию, все, что вам нужно, это пип:

Согласно документации SCRAPY, вам также установлен LXML и OpenSSL. Мы собираемся использовать SCRAPY, чтобы сделать то же самое, что мы использовали BeautifulSoup, W