Вытягивание HTML с веб-страницы в Java - PullRequest
0 голосов
/ 03 декабря 2009

Я хочу получить весь файл исходного кода HTML с веб-сайта на Java (или на Python или PHP, если на этих языках его легче отобразить). Я хочу только просматривать HTML и сканировать его несколькими способами - не редактировать и не манипулировать им каким-либо образом, и я действительно хочу, чтобы я не записывал его в новый файл, если нет другого пути. Существуют ли какие-либо библиотечные классы или методы, которые делают это? Если нет, есть ли способ решить эту проблему?

Ответы [ 3 ]

5 голосов
/ 03 декабря 2009

В Java:

URL url = new URL("http://stackoverflow.com");
URLConnection connection = new URLConnection(url);
InputStream stream = url.openConnection();
// ... read stream like any file stream

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

Я бы рекомендовал использовать библиотеку HttpClient для производственного использования. Он поддерживает аутентификацию, обработку перенаправления, потоки, пул и т. Д.

2 голосов
/ 03 декабря 2009

В Python:

import urllib
# Get a file-like object for the Python Web site's home page.
f = urllib.urlopen("http://www.python.org")
# Read from the object, storing the page's contents in 's'.
s = f.read()
f.close()

Подробнее см. Обработка Python и HTML .

0 голосов
/ 03 декабря 2009

Возможно, вам также следует рассмотреть альтернативу, например запуск стандартной утилиты, такой как wget или curl из командной строки, для извлечения дерева сайта в дерево локальных каталогов. Затем выполните сканирование (на Java, Python и т. Д.), Используя локальную копию. Это должно быть проще, чем реализовать все скучные вещи, такие как обработка ошибок, разбор аргументов и т. Д.

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

...