首页 > 解决方案 > 使用 C# 对动态分页值进行 Web 抓取

问题描述

当我试图从网站上抓取一部分时。这是下面的图像。

网页抓取由于在红色框中选中了分页,我需要提取上图中最后一个的值,它是151。因此,分页是动态的,当我仅使用视图页面源进行检查时,很难提取<div class="jsx-46358917 pagination-wrapper text-center"></div>它的值,因为我知道它是动态的,但我需要分页示例151中的最后一个值。
这是我迄今为止所做的一个代码,用于网络抓取它。

public void parseItem(HtmlDocument doc, string zipCode)
    {
        //Getting json data
        if (doc.DocumentNode.LastChild.HasChildNodes)
        {
            var siteScripts = doc.DocumentNode.SelectSingleNode("//script[@id='__NEXT_DATA__']").InnerText;
            var result = JsonConvert.DeserializeObject<RealtorModel>(siteScripts);

            if (result != null)
            {
                foreach (var realtor in result.Props.CriteriaData.SrpShell.LoadedData.SearchResults.HomeSearch.Results)
                {
                    string propertyId = "M" + realtor.PropertyId;
                    string address = realtor.Location.Address.Line + ", " + realtor.Location.Address.City + ", " + realtor.Location.Address.StateCode + " " + realtor.Location.Address.PostalCode;
                    string listingURL = hostName + "/realestateandhomes-detail/" + realtor.Permalink;
                    var  url = realtor.PrimaryPhoto;
                    listings.Add(new Listings { PropertyID = propertyId, Address = address, Price = realtor.ListPrice, ImageURL = realtor.PrimaryPhoto.Href.AbsoluteUri, ListingURL = listingURL });
                }
            }


            pageNumber = pageNumber + 1;
            string nextUrl = "https://www.realtor.com/realestateandhomes-search/" + zipCode + "/type-single-family-home" + "/pg-" + pageNumber;
            AddTask(nextUrl, this.parseItem, zipCode);

        }
        else
        {
            System.Threading.Thread.Sleep(60000);
            string nextUrl = "https://www.realtor.com/realestateandhomes-search/" + zipCode + "/type-single-family-home" + "/pg-" + pageNumber;
            AddTask(nextUrl, this.parseItem, zipCode);
        }

    }

当我通过抓取获得完整页面时,唯一的事情是分页的最后一个值,由于其动态性质,我无法提取该值。我怎样才能做到这一点,任何提示都会有所帮助。

标签: c#htmlweb-scrapinghtml-agility-packanglesharp

解决方案


推荐阅读