Вопрос по web-crawler – Каковы основные соображения при создании веб-сканера?
=============================================================================

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

Я хочу использовать сканер для обхода «Интернета» для очень простой цели - «соответствует ли разметка сайта XYZ условию ABC?».

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

С самого начала это кажется немного "ненадежным" - это приемлемо?Какие конкретные соображения следует принять сканеру, чтобы не расстраивать людей?

 что он посещает каждую страницу только один раз для каждой сессии. Поскольку вы технически создаете поискового робота, вы должны подчиняться robots.txt и`no-cache` правила. Люди по-прежнему могут блокировать вашего бота специально, если нужно, блокируя IP-адреса

Насколько я могу судить, вы ищете только исходный код, поэтому вам нужно создать что-то, чтобы следовать`<link>`s для таблиц стилей и`<script src="..."></script>` для скриптов Java.



 как уже было сказано).

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



/ доменов или других вещей (диапазоны IP-адресов, ASN и т. Д.), Чтобы ваш паук не увяз в спам-сайтах.

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

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



 который объясняет, кто / что / почему сканирует ваш робот.



[http://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2](https://www.w3.org/TR/html4/appendix/notes.html#h-B.4.1.2)

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



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

Другими словами, убедитесь, что ваш сканер не слишком агрессивен.



Я мог бы продолжать в течение нескольких дней, и вроде бы. у меня есть[Роботы Контрольный список](http://searchtools.com/robots/robot-checklist.html) это покрывает большую часть этого, и я с радостью отвечу, что я могу.

Вам также следует подумать об использовании кода робота-сканера с открытым исходным кодом, поскольку он дает вам огромную поддержку по всем этим вопросам. У меня также есть страница об этом:[открытый код робота](http://searchtools.com/robots/robot-code.html), Надеюсь, это поможет!



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

Несколько полезных ссылок:

[HTTP / 1.1: определения кода состояния](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)

[Агрегаторные клиентские HTTP-тесты](http://diveintomark.org/tests/client/http/)

[Википедия](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)



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

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