HtmlAgilityPack中XPath怎么写

当我们用HtmlAgilityPack去抓取一个已知网页的的数据时,分析网页的时候会用到XPath,可是这个我不是很懂,百度了一下,也没整得太明白。还好意外发现了一个东西。

先贴一段代码,下面就是我在抓取一个页面时的解析代码,看看那些XPath,看上去基本能理解,可是自己想要去写的时候就麻烦。

 var htmlDoc = fromWeb($@"http://cq.xxxxxx.com{item.Href}");
 var shopId = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='bhsj']/span[1]/pn").InnerText;
 var title = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='title']").InnerText;
 var price = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='je']/li[1]/span[1]/b").InnerText;
 var area = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='jzmj']/li[1]/span/b").InnerText;
 var district = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='qy']/p[2]/a[1]/span").InnerText;
 var longitude = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='longitude']").InnerText;
 var latitude = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='latitude']").InnerText;
 var address = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='qy']/p[3]/span").InnerText;
 var buildingName = htmlDoc.DocumentNode.SelectSingleNode("//*[@id='qy']/p[1]/a/span").InnerText;

所有我发现了这个,在网页上F12找到对应要解析的位置,或者鼠标选择想要解析的地方,右键->检查,注意我用的是edge浏览器,Google浏览器一样可以

 

上图中复制XPath的结果:  //*[@id="activity-name"]

上图中复制完整XPath的结果:/html/body/div[1]/div[2]/div[1]/div/div[1]/h1

两个都能用,效果一样,可根据不通的应用场景选择是否用完整的XPath

这样多用几次慢慢都能看懂是什么意思了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值