我正在使用下面的代码尝试返回该网站上的股票列表。代码的结果是一个空列表。我从googlechromium开发工具复制xpath。我做错什么了?
from lxml import html
import requests
url = 'http://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
resp = requests.get(url)
tree = html.fromstring(resp.text)
tickers = tree.xpath(r'//*[@id="mw-content-text"]/table[1]/tbody/tr[1]/td[1]/a')
print(tickers)
浏览器添加了缺少的HTML元素,这些元素是HTML规范声明的模型的一部分。
lxml
不将这些添加到中。在最常见的此类元素是
<tbody>
元素。你的文档没有这样的元素,但是Chrome有,他们把它放在XPath中。<thead>
元素中的另一个这样的元素;同样,原始的HTML缺少它,但是Chrome把它放进去,把一个<tr>
行和<th>
元素放在一起。在因此,正确的XPath表达式是:
例如,表中的第二行,该行中的第一个表单元格。在
{{cd7>在这种情况下,您不需要直接加载特定于cd7}的url:
^{pr2}$如果要提取第一列中的所有}以选择all:
<a>
元素,则必须删除对<tr>
元素的限制;XPath选择所有元素,删除{相关问题 更多 >
编程相关推荐