Динамическая очистка веб-страниц с помощью C#

Я пытаюсь очистить веб-страницу с помощью C# и использую HtmlAgilityPack, она хорошо работает для меня, но у меня возникла проблема с этим веб-сайтом, когда мне нужно очистить данные с другой страницы списка продуктов. Поскольку ссылка не имеет номера страницы, поэтому я не могу получить к ней доступ, изменив ссылку. Я обнаружил, что страница изменяется с помощью функции javascript "__doPostBack", которая не меняет ссылку, просто перезагружает страницу и загружает данные. Кнопка смены страницы Это мой код для очистки кода и цены продукта на этом веб-сайте, однако на другой странице есть другие продукты, например, 2, 3, 4, 5... Мне нужно собрать данные со всех этих страниц. На других сайтах я могу просто передать ссылку на web.Load("Ссылка"); и это работает хорошо, потому что ссылка меняется при смене страницы списка товаров. В этом примере ссылка не изменяется при выборе другой страницы списка.

  public class CodeAndPrice
{
    public string Code { get; set; }
    public string Price { get; set; }
}
public partial class Form1 : Form
{
    DataTable table;
    HtmlWeb web = new HtmlWeb();
    public Form1()
    {
        InitializeComponent();
        InitTable();
    }
    private void InitTable()
    {
        table = new DataTable("DataTableTest");
        table.Columns.Add("Code", typeof(string));
        table.Columns.Add("Price", typeof(string));
        dataGridView.DataSource = table;
    }
    private async Task<List<CodeAndPrice>> DataScraping (){

        var page = await Task.Factory.StartNew(() => web.Load("https://www.kilobaitas.lt/Kompiuteriai/Plansetiniai_(Tablet)/CatalogStore.aspx?CatID=PL_626"));

        var codesNodes = page.DocumentNode.SelectNodes("//td[@class='mainContent']//div[@class='itemNormal']//div[@class='itemCode']");
        var pricesNodes = page.DocumentNode.SelectNodes("//td[@class='mainContent']//div[@class='itemNormal']//div[@class='itemCode']//parent::div//div[@class='itemBoxPrice']");
        if (codesNodes == null || pricesNodes == null)
            return new List<CodeAndPrice>();

        var codes = codesNodes.Select(node => node.InnerText.Replace("kodas", "").Replace(" ", "").Replace(":&nbsp;", ""));
        var prices = pricesNodes.Select(node => node.InnerText.Replace(" ", "").Replace("&nbsp;€", ""));

        return codes.Zip(prices, (code,price)=> new CodeAndPrice() { Code = code, Price = price }).ToList();
    }
    private async void Form1_Load(object sender, EventArgs e)
    {
        var results = await DataScraping();
        foreach (var rez in results) {
            table.Rows.Add(rez.Code, rez.Price);
    }
    }


}

Передача __doPostBack('designer1$ctl11$ctl00$MainCatalogSquare1$XDataPaging1','paging.1'); в консоль браузера загружается страница 2, изменяя "paging.*", браузер загружает страницу *+1

Как проще всего манипулировать javascript, когда я смогу менять страницу при очистке данных и очистке данных с других страниц этого сайта?

0 ответов

Другие вопросы по тегам