我一直在努力尝试各种变化:
'//*[@id="mw-content-text"]/div[2]/table/tbody/tr/td/div/ul/li/a'
作为 XPath 从该 wiki 页面获取所有学区 URL:http://en.wikipedia.org/wiki/List_of_school_districts_in_Arkansas 。正确的 XPath 是什么?
提前致谢!
代码片段:
print 3.1, tree.xpath('//*[@id="mw-content-text"]/div[2]')
print 3.2, tree.xpath('//*[@id="mw-content-text"]/div[2]/table')
print 3.3, tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody')
print 3.4, tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody')
print 3.5, tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody/tr/td/div/ul/li/a/text()')
for row in tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody/tr/td/div/ul/li/a/text()'):
print row
district_urls.append('http://en.wikipedia.org'+row.get('href'))
作为引用:
3.1 [<Element div at 0x1109f7f00>]
3.2 [<Element table at 0x1109f7f00>]
3.3 []
3.4 []
3.5 []
最佳答案
我猜您一直在使用 Firebug 或类似的开发人员工具创建此 XPath 表达式。他们在 DOM 上工作,需要 <tbody/>
标签 <tr/>
s,如果源代码中没有给出,则插入这些内容。当查看页面源代码时(不使用 Firebug,如有必要,请使用 wget
或 curl
),您会发现没有 <tbody/>
。标签。
使用这个表达式:
//*[@id="mw-content-text"]/div[2]/table/tr/td/div/ul/li/a
关于python - 从页面中提取 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239109/