Парсинг Статья Броуди

Я Не нужны никакие API: Web Зачистка For Fun и прибыль

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

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

Любой контент, который можно просматривать на веб-странице может быть Царапины. Период.

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

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

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

Почему вы должны Выскоблите
Но сначала мы начнем с некоторых больших причин, почему вы должны рассмотреть веб выскабливание первых, прежде чем вы начинаете искать API, или RSS-каналы или другие, более традиционные формы структурированных данных.

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

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

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

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

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

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

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

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

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

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

Хотите узнать больше?
Я разделяю все мои веб выскабливание секреты в моей обширной электронной книги, The Ultimate Руководство по Веб соскоб . Узнать больше . Купить сейчас - $ 12.00
Давайте перейдем к выскабливать
Итак, вы решили, что вы хотите, чтобы изучить и начать захват данных, как истинный хакер. Потрясающие.

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

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

Извлечение данных
Итак , первое , что вы собираетесь нужно сделать , это выборки данных. Вам нужно будет начать с поиска ваших "конечных точек" - URL или URL - адреса , которые возвращают данные , которые необходимы.

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

Другой вариант для начала, чтобы идти прямо к поисковой функциональности сайта. Попробуйте ввести в несколько различных терминов и снова, обратите внимание на URL и как она меняется в зависимости от того, что вы ищете. Вероятно , вы увидите параметр GET , как , q=который всегда изменяется , основанные на поиске термина.

Попробуйте удалить другие ненужные параметры GET из URL, пока вы не остались только те , которые необходимо загрузить данные. Убедитесь в том , что всегда есть начало , ?чтобы начать строку запроса и &между каждой парой ключ / значение.

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

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

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

Другая вещь, которую вы можете попробовать сделать это изменение "Display X Per Page", который большинство пагинации UIs имеем теперь. Опять же, обратите внимание на новый параметр GET, который будет добавлен к URL, который указывает, сколько элементов на странице.

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

AJAX не так уж плохо! 
Иногда люди видят веб - страниц с фрагментами URL #и AJAX загрузки контента и думаю, что сайт не может быть Царапины. Напротив! Если сайт использует AJAX для загрузки данных, что , вероятно , делает его еще проще вытащить информацию вам нужно.

Ответ AJAX, вероятно, возвращается в какой-то хорошо-структурированным способом (вероятно, JSON!) Для того, чтобы быть вынесено на странице с Javscript.

Все, что вам нужно сделать, это потянуть вкладку сети в Web Inspector или Firebug и просматривать запросов XHR для тех, которые, кажется, тянут в ваших данных.

После того как вы найдете его, вы можете оставить crufty HTML позади и вместо этого сосредоточиться на этой конечной точке, которая является по существу без документов API.

(Un) структурированных данных?
Теперь, когда вы выяснили, как получить данные, необходимые с сервера, то несколько сложнее часть получает данные, необходимые из разметки страницы.

Использование CSS Крючки
По моему опыту, это обычно не вызывает затруднений , так как большинство веб - дизайнеров засорять разметки с тоннами classэс и idс крючками , чтобы обеспечить их CSS.

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

Просто щелкните правой кнопкой мыши на разделе информации , которую нужно и потянуть вверх , чтобы посмотреть на него веб - инспектор или Firebug. Увеличить вверх и вниз по дереву DOM , пока вы не найдете наиболее удаленных <div>вокруг элемента , который вы хотите.

Это <div>должно быть внешняя оболочка вокруг одного элемента , который вы хотите получить доступ к. Это , вероятно , имеет некоторый classатрибут , который вы можете использовать , чтобы легко вытащить все из других элементов обертку на странице. Затем вы можете перебирать их так же , как вы бы перебрать возвращенные детали с помощью ответа API.

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

После того, как вы найдете правильный узел в дереве DOM, вы всегда должны просмотреть исходный код страницы ( "правой кнопкой мыши"> "View Source"), чтобы убедиться, что элементы, которые вы должны фактически появляться в сыром HTML.

Эта проблема вызвала у меня ряд головных scratchers.

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

Большая часть кода я пишу в Python, и я люблю BeautifulSoup для его обработки ошибок и супер-простой API. Я тоже люблю свой девиз:

Вы не написали эту ужасную страницу. Вы просто пытаетесь получить некоторые данные из него. Beautiful Soup здесь, чтобы помочь. :)

Вы будете иметь плохое время, если вы пытаетесь использовать XML-анализатор, так как большинство сайтов там на самом деле не проверить, как правильно сформированный XML (извините XHTML!) И даст вам кучу ошибок.

Хорошая библиотека будет читать в HTML , что вы тянете при помощи какой - то HTTP библиотеку (наконечник шляпы к библиотеке запросы , если вы пишете Python) и превратить его в объект , который вы можете пройти и перебирать к содержанию вашего сердца, подобно объект JSON.

Эфирное HTTP, HTML и CSS для веб-скреперы
Я покрываю основы всех веб - технологий , которые необходимо для того , чтобы быть эффективным веб - скребок в моем веб - выскабливание книгу . Присоединяйтесь к тысячам довольных читателей.

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

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

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

Когда в сомнении, Spoof Заголовки
Некоторые веб - сайты требуют , чтобы ваш User Agent строка устанавливается на то , что они позволяют, или вам необходимо установить определенные куки или другие заголовки, чтобы получить правильный ответ.

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

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

Содержание за Логин
Иногда вам может понадобиться создать учетную запись и войти в систему, чтобы получить доступ к необходимой информации. Если у вас есть хорошая библиотека HTTP , который обрабатывает входы в систему и автоматически отправляющие куки сессии (я упоминал , как удивительный просит есть?), То вам просто необходимо ваше скребка логин , прежде чем он попадает на работу.

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

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

Поскольку служба третья сторона провела ограничивающий скорость на основе IP-адреса (указывается в их Docs), мое решение было поместить код, который ударил свою службу в какой-то стороне клиента Javascript, а затем отправить результаты обратно на мой сервер от каждого из клиентов.

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

В зависимости от приложения, это может работать для вас.

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

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

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

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

Это настоящий хакер вызов, чтобы прочитать некоторые HTML суп и искать закономерности и структуры в разметке, чтобы вытащить необходимые вам данные. Это, как правило, не занимает гораздо больше времени, чем чтение некоторых API Docs и получать до скорости с клиентом. Кроме того, это намного больше удовольствия!

Окончательный Справочник по Веб соскоб
Я написал книгу под названием The Ultimate Руководство по Веб соскоб , который включает в себя все , что вам нужно знать , чтобы извлечь информацию из веб - страниц. Подробнее →

Заявка на бесплатный тест

Оставьте, пожалуйста Ваши контакты, наш менеджер свяжется с Вами в ближайшее время.

* Ваше имя

* Ваш Email

Ваш телефон (Не обязательно)

Ваш сайт (Не обязательно)

Ваши пожелания (Опишите, какую задачу нам следует решить)