c# - 无法抓取 .HTM 文件

标签 c# screen-scraping html-agility-pack web-scraping

我刚刚开始从网页上抓取基本文本,目前正在使用 HTMLAgilityPack C# 库。我在 rivals.yahoo.com 的 boxscores 上取得了一些成功(体育是我的爱好,所以为什么不抓取一些有趣的东西呢?)但我被困在 NHL 的比赛摘要页面上。我认为这是一个有趣的问题,所以我会把它贴在这里。

我正在测试的页面是: http://www.nhl.com/scores/htmlreports/20102011/GS020079.HTM

乍一看,这似乎是没有 ajax 或其他东西的基本文本,会把基本的抓取工具搞得一团糟。然后我意识到由于某些 javascript,我无法右键单击,所以我解决了这个问题。我右键单击 firefox 并使用 XPather 获取主队的 xpath,我得到:

/html/body/table[@id='MainTable']/tbody/tr[1]/td/table[@id='StdHeader']/tbody/tr/td/table/tbody/tr/td[3]/table[@id='Home']/tbody/tr[3]/td

当我尝试获取该节点/内部文本时,htmlagilitypack 找不到它。有没有人在页面的源代码中看到任何可能阻止我的奇怪内容?

我是新手,仍在学习人们如何阻止我进行抓取,非常感谢任何提示或技巧!

附注我遵守有关机器人等的所有站点规则,但我注意到这种奇怪的行为并将其视为挑战。

最佳答案

好的,看来我的 xpath 中有 tbody。当我从 xpath 中手动删除这些 tbody 时,HTMLAgilityPack 可以很好地处理它。

我仍然想知道为什么我得到无效的 xpath,但现在我已经回答了我的问题。

关于c# - 无法抓取 .HTM 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3984064/

相关文章:

c# - 字符串如何在 C# 中终止?

c# - GetLastInputInfo 是用户特定的 - 是否有类似的东西可以提供机器范围的最后输入时间

c# - 如何为 XmlReader 指定超时?

c# - 通过 VIEWSTATE 抓取

c# - HtmlAgilityPack HtmlDocument.Load 抛出异常 "object not set to an instance"

c# - 加入不同对象的列表

python - 如果网站的响应返回 XML/JSON,我如何从该网站下载信息?

c# - 屏幕抓取应用程序(非 HTML)

c# - 如何将 HtmlDocument 保存到内存中? HTML 敏捷包

jquery - Html Agility Pack 无法删除节点