c# - 使用 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);
}
}
当我通过抓取获得完整页面时,唯一的事情是分页的最后一个值,由于其动态性质,我无法提取该值。我怎样才能做到这一点,任何提示都会有所帮助。
解决方案
推荐阅读
- vagrant - vagrant ssh-config 非常慢
- r - R 字符到日期时间导致 NA
- angular - Angular 7注入服务未设置
- ios - IQKeyboardManagerSwift“共享”不可用:在适当的情况下使用基于视图控制器的解决方案
- r - 在 R 的逻辑回归中使用权重的正确方法是什么?
- shell - 将转录本 ID 和基因符号从 rna fasta 打印到新的文本文件
- php - 如果 in_array 未找到,则使用 else 语句
- android - 为什么 LiveData 在屏幕旋转后无法恢复原始 UI 状态?
- html - 按下按钮后更改值形式(django)
- django - 在应用程序引擎上部署 django 应用程序时使用 nginx/1.14.0 (Ubuntu) 的 502 Bad Gateway