Я пытаюсь развить свои навыки программирования, я пытался создать своего рода собственный клиент для просмотра поисковых запросов Google.

Я не хочу использовать API Google, в основном потому, что мне кажется, что это избавит от многих интересных программ.

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

Вот пример поиска по слову «файл».

http://pastebin.com/xjF2WRRj

Кто-нибудь знает, как правильно скачать html страницы?

Заранее спасибо

0
Tom Brisland 4 Мар 2015 в 01:23

2 ответа

Лучший ответ

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

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

Вместо этого попробуйте загрузить страницу с результатами поиска, уже обработанными Google (а не с результатами, загружаемыми динамически), например, этот поиск для "test" в Google. Обратите внимание на разницу в URL-адресах между этим поиском и этим, который загружает результаты для "test "динамически.

0
heartyporridge 3 Мар 2015 в 22:42

Вот как получить HTML:

Dim WebRequest As HttpWebRequest = TryCast(HttpWebRequest.Create(SearchString), HttpWebRequest)

Dim WR As HttpWebResponse = TryCast(WebRequest.GetResponse(), HttpWebResponse)

Dim receiveStream As Stream = WR.GetResponseStream()

Dim readStream As New StreamReader(receiveStream, Encoding.UTF8)

Dim Page As [String] = readStream.ReadToEnd()

Я бы использовал HtmlAgility Pack для его анализа.

0
Steve Wellens 3 Мар 2015 в 22:40