имитировать бесконечную прокрутку в c #, чтобы получить полный html страницы

c# html-agility-pack infinite-scroll

Вопрос

Существует множество сайтов, которые используют этот (imo) раздражающий стиль «бесконечной прокрутки». Примерами этого являются сайты, такие как tumblr, twitter, 9gag и т. Д.

Недавно я попытался сфотографировать некоторые фотографии с этих сайтов программно с помощью HtmlAgilityPack. как это:

HtmlWeb web = new HtmlWeb();  
HtmlDocument doc = web.Load(url);
var primary = doc.DocumentNode.SelectNodes("//img[@class='badge-item-img']");
var picstring = primary.Select(r => r.GetAttributeValue("src", null)).FirstOrDefault();

Это хорошо работает, но когда я пытался загружать HTML-код с определенных сайтов, я заметил, что я получил только небольшое количество контента (скажем, первые 10 «сообщений» или «картинок» или что-то еще.) Это сделало мне интересно, можно ли смоделировать «прокрутку вниз» на странице в c #.

Это не тот случай, когда я загружаю html программно, когда я просто перехожу на такие сайты, как tumblr, и я проверяю firebug или просто «смотрю на источник», я ожидал, что все содержимое будет где-то там, но многое из этого похоже, скрыт / вставлен с javascript. Только контент, который на самом деле отображается на моем экране, присутствует в источнике HTML.

Поэтому мои вопросы: возможно ли симулировать бесконечное прокручивание страницы и загрузку в этом HTML с помощью c # (желательно)?

(Я знаю, что я могу использовать API для tumblr и twitter, но я просто пытаюсь повеселиться вместе с HtmlAgilityPack)

Популярные ответы

Невозможно надежно сделать это для всех таких сайтов одним выстрелом, за исключением внедрения веб-браузера (который обычно не будет работать в безголовых средах).

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

Кроме того, используйте веб-отладчик в вашем браузере (например, тот, который включен в Chrome). Эти отладчики обычно имеют «сетевую» панель, которую вы можете использовать для проверки запросов AJAX, выполняемых этой страницей. Рассмотрение этих запросов при прокрутке вниз должно дать вам достаточно информации для написания кода C #, который имитирует эти запросы.

Затем вам придется анализировать ответ от этих запросов как любой тип контента, который предоставляет конкретный API, который, вероятно, будет JSON или XML, но почти наверняка не HTML. (Это может быть лучше для вас в любом случае, так как это избавит вас от необходимости анализировать ориентированный на экран HTML, тогда как API AJAX предоставит вам объекты данных, которые должны быть намного проще в использовании.)



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow