为什么 lxml 找不到 Chrome 检查员给出的 xpath?
Why lxml isn't finding xpath given by Chrome inspector?
这是我的代码:
from lxml import html
import requests
page = requests.get('https://en.wikipedia.org/wiki/Nabucco')
tree = html.fromstring(page.content)
title = tree.xpath('//*[@id="mw-content-text"]/table[1]/tbody/tr[1]/th/i')
print(title)
问题:print(title) 打印“[]”,空列表。我希望这会打印 "Nabucco"。 XPath 表达式来自 Chrome inspector "Copy XPath" 函数。
为什么这不起作用? lxml 和 Chrome 的 xpath 引擎之间是否存在分歧?或者我错过了什么?我对 python、lxml 和 xpath 有点陌生。
那是因为 tbody
标签。你在浏览器中看到它,因为标签是 inserted by the browser. requests
不是浏览器,只是按原样下载页面源代码:
替换:
//*[@id="mw-content-text"]/table[1]/tbody/tr[1]/th/i
与:
//*[@id="mw-content-text"]/table[1]/tr[1]/th/i
这是我的代码:
from lxml import html
import requests
page = requests.get('https://en.wikipedia.org/wiki/Nabucco')
tree = html.fromstring(page.content)
title = tree.xpath('//*[@id="mw-content-text"]/table[1]/tbody/tr[1]/th/i')
print(title)
问题:print(title) 打印“[]”,空列表。我希望这会打印 "Nabucco"。 XPath 表达式来自 Chrome inspector "Copy XPath" 函数。
为什么这不起作用? lxml 和 Chrome 的 xpath 引擎之间是否存在分歧?或者我错过了什么?我对 python、lxml 和 xpath 有点陌生。
那是因为 tbody
标签。你在浏览器中看到它,因为标签是 inserted by the browser. requests
不是浏览器,只是按原样下载页面源代码:
替换:
//*[@id="mw-content-text"]/table[1]/tbody/tr[1]/th/i
与:
//*[@id="mw-content-text"]/table[1]/tr[1]/th/i