如果你看一下这个网站:http://gbgfotboll.se/serier/?scr=table&ftid=57109
第二个表格信息是我需要的。
我现在在做什么:
我正在浏览 Tid 列中的每个单元格以匹配特定日期。如果它匹配则继续从该行提取其他相关数据。代码如下:
rows_xpath = XPath("//*[@id='content-primary']/table[2]/tbody/tr[td[1]/span/span//text()='%s']" % (date))
time_xpath = XPath("td[1]/span/span//text()[2]")
team_xpath = XPath("td[2]/a/text()")
html = lxml.html.parse(url)
league_xpath = XPath("//*[@id='content-primary']/h1//text()")
divName = league_xpath(html)[0]
trash, divisionName = divName.rsplit("- ")
dict[divisionName] = {}
for i,row in enumerate(rows_xpath(html)):
.... doing some stuff here
问题: 随着时间的推移,另一个表将被插入到网页中,这意味着 rows_xpath 将无效,因为需要将其更改为:
rows_xpath = XPath("//*[@id='content-primary']/table[3]/tbody/tr[td[1]/span/span//text()='%s']" % (date))
更改的是表[x],其中x是要更改的数字。
是否有智能解决方案来解决这个问题,甚至是以更安全的方式获取所需信息的更好方法,而不依赖于XPath?我感谢所有帮助!
答案 0 :(得分:0)
如果您只是在所有表中查找唯一的日期值,则不必指定table
元素编号。
rows_xpath = XPath("//*[@id='content-primary']/table/tbody/tr[td[1]/span/span//text()='%s']" % (date))
这将返回具有该日期值的行的集合,但是可能存在许多表。但是,如果您要在特定表上查找日期,则可能必须先选择带有xpath的表(假设您可以使用某些唯一值),然后在该表中使用xpath。