Разбор HTML-файла в Java - PullRequest
0 голосов
/ 30 июня 2011

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

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

Надеюсь, это имело какой-то смысл. С уважением, Джейми.

Ответы [ 6 ]

2 голосов
/ 30 июня 2011

Никакой дополнительной нагрузки на серверы других людей. Сервер получит ваш простой запрос HTML GET, он даже не узнает, что вы затем анализируете страницу / html.

Вы проверяли это: JSoup ?

1 голос
/ 30 июня 2011

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

0 голосов
/ 30 июня 2011

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

НО:

  • если вы начнете бомбардировать сервер компании с умеренными ресурсами с загрузками или начнете демонстрировать явные шаблоны «роботов» (например, загрузку точно каждую секунду), они, вероятно, заблокируют вас; поэтому наложите некоторые разумные ограничения на то, что вы делаете (например, каждая последовательная загрузка на один и тот же сервер происходит через случайные интервалы от 10 до 20 секунд);
  • когда вы делаете запрос, вы, вероятно, захотите установить заголовок запроса "referer", чтобы имитировать реальный браузер или быть открытым о том, что это такое (придумайте имя для своего "робота", создайте страницу, объясняющую, что он включает URL-адрес этой страницы в заголовке реферера) - многие владельцы серверов пропускают законных роботов с хорошим поведением, но блокируют «подозрительных», если неясно, что они делают;
  • на аналогичной заметке, если вы делаете вещи «легально», не выбирайте страницы, которые файлы «robot.txt» сайта запрещают вам извлекать.

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

0 голосов
/ 30 июня 2011

Вы можете использовать htmlunit.Это дает вам виртуальный браузер без графического интерфейса.

0 голосов
/ 30 июня 2011

Помимо рекомендации Хэнка Гея , я могу только предположить, что вы также можете повторно использовать какой-то анализатор HTML с открытым исходным кодом, например, Jsoup , для анализа / обработки загруженных файлов HTML. .

0 голосов
/ 30 июня 2011

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

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

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