Как сделать скрол вниз?

191
11 сентября 2018, 11:50

Если в двух словах то я никак не пойму как делать скрол в низ, либо подгружать контент на таких сайтах как вк(стенки), pinterest.com или deviantart.com. Страницу загружаю парсю, но там не весь контент и как его догрузить чтоб допарсить?

Answer 1

Открываешь в браузере инструменты веб-разработчика, раздел Сеть. Открываешь целевой сайт. После окончания загрузки страницы в панельке Сеть очищаешь список появившихся там запросов и скроллишь вниз страничку. В какой-то момент будет начата догрузка контента. На панельке Сеть появится новый список запросов? инициированных догрузкой. Тебе нужен самый первый Post/Get, который запрашивает html или plain/text. Выбираешь его, остается только скрупулёзно изучать заголовки этого запроса и URL куда он улетел.

Дальше всё примитивно, создаешь WebRequest, у него в свойствах копируешь все критичные заголовки изученного выше запроса и остаётся выполнить GetResponse() => WebResponse => GetResponseStream() => Stream => StreamReader => целевой string.

Если в ответе видишь мусор, то данные были сжаты, используй автоматическую декомпрессию. Когда будешь изучать запрос догрузки контента при скроллинге/пагинации смотри не только на заголовки запроса, но и на его тело, в большинстве случаев именно там все интересующие тебя зависимости. Ну и плюс сам target URL может различаться от страницы к странице в пределах одного домена.

Можно сразу юзать HttpWebRequest, если этого тебе будет достаточно. Про HttpClient придется забыть. И вот тут я наконец разул глаза и увидел, что вопрос про AngleSharp, отправлю, зря печатал что ли. AngleSharp core скроллить не умеет, поддержка планировалась в AngleSharp.Scripting, но не знаю, реализовал ли её автор к текущему моменту.

READ ALSO
Многоразовое копирование

Многоразовое копирование

Задача: Запустить программуВсе то, что было скопировано за время работы программы - сохранять в листе

180
Странно работает цикл for в C#

Странно работает цикл for в C#

Делал задачку на цикл, решил пошагово посмотреть как все работает и встал в ступорПочему не выходит из цикла когда j = 4?

201
SignInManager.CreateUserPrincipalAsync() выдаёт NullReference

SignInManager.CreateUserPrincipalAsync() выдаёт NullReference

Пытаюсь вызвать signInManagerCreateUserPrincipalAsync(user), а он чудит:

204
Изменение масштаба окна IE

Изменение масштаба окна IE

Я запускаю IE (в общем любой браузер) из программы c# и мне необходимо изменить масштаб отображения страницы сайтаС запуском и открытием страницы...

170