【问题标题】:html agility pack parsing error?html敏捷包解析错误?
【发布时间】:2017-06-01 01:03:27
【问题描述】:

我正在对几百页亚马逊搜索结果进行一些数据分析,并使用 hap 来解析结果:

hap.DocumentNode.SelectNodes("//ul[@id='s-results-list-atf']/li")

这只会返回结果列表的前四个 li,尽管还有更多。我已经检查并仔细检查了,我确定这是正确的 - 我做错了什么吗?我不明白为什么结果仅限于 4 个。典型的页面内容可能是:https://www.amazon.com/s/?url=search-alias%3Daps&field-keywords=100+percent+barstow

使用其他搜索结果页面会出现同样的问题,并且不会在页面上给出结果,但总是比那里的结果少很多。

【问题讨论】:

  • 也许这个页面是按需加载的,考虑到滚动,那么你没有得到整个结果。
  • @Fals 我也这么认为,但检查了它正在解析的 html 输出,它就在那里。如果我将 SelectNodes 更改为更宽松的内容,则会捕获 21 个节点(页面上的每个列表)。
  • 试试另一个选择器,比如 id 包含 result_。
  • 如上。应该有 12 个节点时是 4 个节点或 21 个节点
  • @user3791372 我检查了亚马逊页面并在页面源上做了一个 CTRL+F 并且只找到了 3 个节点

标签: c# html-agility-pack


【解决方案1】:

试试这个:

hap.DocumentNode.SelectNodes("//div[contains(@id,'tfResults')]//li[contains(@class,'s-result-item')]");

但不能保证其他页面,因为我只是基于您提供的链接

【讨论】:

  • +1 因为我了解到您可以使用 contains 来捕获部分值(例如 atfResults / btfResults)将被上述捕获,这是需要的!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多