【发布时间】:2014-03-23 04:29:07
【问题描述】:
我正在尝试访问此元素://*[@id="table-matches"]/此页面上的表:http://www.oddsportal.com/matches/soccer/20140221/
我想获取包含匹配项的表。表格在开始时间选项卡下开始。我正在寻找的元素是'table class="table-main"',它位于元素'div id="table-matches" style="display: block;"'中
我尝试在 C# 中使用 HtmlAgilityPack 获取此文档,我可以找到“div”元素,但它说它没有任何子节点(应该有一个表子节点)。如果我尝试获取表格,则结果为空。代码如下:
var webGet = new HtmlWeb();
var document = webGet.Load("http://www.oddsportal.com/matches/soccer/20140221/");
var div = document.DocumentNode.SelectNodes("//div[@id='table-matches']");
var table = document.DocumentNode.SelectNodes("//*[@id='table-matches']/table");
var table2 = document.DocumentNode.SelectNodes("//table");
所以,div 变量包含 div 元素(但它没有子节点),table 变量为 null,即使 table2 变量包含 4 个元素,但它们都不是所需的 table。
我认为 HtmlAgilityPack 存在问题,并尝试使用 Python 获取整个网页。所以我在一个文本文件中获取了整个 HTML 文档并搜索了该文本文件,我可以找到 div 元素,但它是空的。里面没有表格元素。这是为什么?为什么我在chrome或internet explorer中可以看到table元素,但是我下载html的时候却没有这个元素?
这是python代码:
url = urllib.urlopen("http://www.oddsportal.com/matches/")
document = url.read()
htmlOddsPortal = open("htmlOddsPortal.txt", "w")
htmlOddsPortal.write(document)
这是最终文本文档中的元素:
<div id="table-matches"></div> <!-- END PAGE BODY -->
【问题讨论】:
标签: c# python html parsing html-agility-pack