Почему HTML-код, загружаемый WebClient, отличается от страницы Chrome "Просмотр исходного кода"? - PullRequest
0 голосов
/ 03 декабря 2018

Я использую следующий код для загрузки данной веб-страницы.

using (WebClient client = new WebClient())
{
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
    using (Stream data = client.OpenRead("https://www.yellowpages.com/south-jordan-ut/plumbers?page=5"))
    using (StreamReader reader = new StreamReader(data))
    {
        string html = reader.ReadToEnd();
    }
}

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

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

Ответы [ 2 ]

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

Итак, если вы читаете HTML-код, который возвращает веб-клиент, вы можете увидеть текст:

Мы можем предоставить вам лучший опыт на Yellowpages.com, если вы обновитесь до последней версиивашего браузера "

Если вы измените свой user-agent на что-то, что отправит Chrome, вы получите ожидаемые результаты:

client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36");
0 голосов
/ 03 декабря 2018

Вероятно, есть вызов ajax или что-то подобное для загрузки данных страницы.Это современная парадигма программного обеспечения, в то время как перед страницей будут все данные, уже имеющиеся для данных.Все остальные говорят о том, что если для загрузки контента есть IS javascript, то веб-клиент не сможет загрузить этот контент.Вот почему вы видите его в своем браузере, а не в веб-клиенте.

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

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