2009-12-03 3 views
0

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

ответ

5

В Java:

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

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

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

+0

Я думаю, что я делаю что-то неправильно. Компилятор сообщает мне, что URLConnection не может быть создан (это абстрактный класс). Как я могу создать его корректно или существует подкласс для URLConnection, который может быть создан? – Brian

+0

Я думаю, что это должно быть URL hp = новый URL ("http://stackoverflow.com"); URLConnection hpCon = hp.openConnection(); – GustyWind

+0

@GustlyWind, спасибо. Должен был действительно проверить код. – notnoop

2

В 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 and HTML Processing для более подробной информации.

0

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

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