кнопка «Загрузить еще» делала XHR-запросы к серверу, к этому запросу каждый раз при совершении нового вызова был прикреплен динамический c ключ разбиения на страницы, поэтому я собирал все URL-адреса (запросы ) который содержал расширенную часть обзоров. затем по отдельности очистите каждый URL-адрес, чтобы получить то, что я хотел.
функция принимает URL-адрес страницы отзывов пользователей в качестве аргумента. Первые 3 строки внутри функции должны сформировать URL-адрес запроса XHR, затем ключ пагинации. со страницы html и URL для следующей страницы формируется рекурсивно, пока не будут найдены все URL.
public async void GetUrls(string u)
{
string toappend = "/_ajax?ref_=undefined&paginationKey=";
string aurl = u.Substring(0, 44) + toappend;
var init_url = u;
var httpCli = new HttpClient();
var html = await httpCli.GetStringAsync(init_url);
var htmldoc = new HtmlDocument();
htmldoc.LoadHtml(html);
var nxt_url = htmldoc.DocumentNode.Descendants("div")
.Where(node => node.GetAttributeValue("class", "").Equals("loadmoredata")).ToList();
if (nxt_url.Count!=0)
{
foreach (var item in nxt_url)
{
string url = item.GetAttributeValue("data-key", "").ToString();
urllist.Add(url);
string succ_url = aurl + url;
//Console.WriteLine(succ_url);
GetUrls(succ_url);
Console.WriteLine("----Saving URLs..-----");
}
}
else if(nxt_url.Count==0)
{
Console.WriteLine(" Crawl Successful ");
ScrapenSave(u);
}
}