我目前正在学习如何使用XPath从HTML文档中提取信息。我正在使用python并且在获取网页标题之类的内容时没有遇到任何问题,但是当我尝试在表中获取特定单元格的文本时,我只是返回一个空值。
这是我的代码,我使用chrome来复制我希望从中获取值的表格单元格的XPath。
keymap%
答案 0 :(得分:3)
您不应在XPath表达式中使用tbody
标记,因为它可能会被开发人员忽略,并在页面呈现时由浏览器添加。您可以在XPath下面尝试获取所需的值:
location = tree.xpath('//*[@id="mw-content-text"]/div/table[1]//tr[not(parent::thead)]/td[3]/text()')
输出
Location: ['Europe', 'Europe', 'North America', 'Europe', 'Europe', 'Europe', '
Europe', 'Europe', 'Europe', 'Europe', 'Europe', 'North America', 'North America
', 'Europe', 'Europe', 'Asia', '\nEurope', 'Asia', '\nEurope', 'Europe', 'Europe
', 'Europe', 'Europe', 'Europe', 'Europe', 'Europe', 'Oceania', '\nEurope', 'Nor
th America', 'Europe', 'Europe', 'Asia', 'Europe', 'North America', 'Asia', 'Eur
ope', 'Europe', 'North America', 'North America', 'Europe', 'Europe', 'North Ame
rica', 'North America', 'Asia', 'Europe', 'Europe', 'Europe', 'North America', '
Asia', 'Oceania', 'North America', 'Europe', 'Europe', 'Asia', 'North America',
'Europe', 'Europe', 'South America', 'Asia', 'Asia', 'Asia', 'Europe', 'North Am
erica']
答案 1 :(得分:2)
尝试:
tree.xpath('//*[@id="mw-content-text"]/div/table[1]/tr/td[3]/text()')
我认为Chrome中呈现的网页与请求返回的内容略有不同。 (即不需要textbody,并指定tr [1]产生空结果。仅供参考。你提供的xpath签出并在chrome中工作正常。
请参阅下面的Andersson的答案,但基本上,可以通过浏览器添加tbody,最好不要在路径中使用它