Python 抓取 xpath 不适用于特定的站点/表



我在尝试从网址上的表中抓取数据时遇到问题:

http://economia.uol.com.br/cotacoes/bolsas/indx-bovespa/?intraday&size=600

它指的是日内市场数据。基于前面的示例和 firebug 提供的 xpath 标签,我编写了下面的代码,但 tr_nodes 和 td_content 都返回空列表:

import urllib2
from lxml import etree
uol = urllib2.urlopen("http://economia.uol.com.br/cotacoes/bolsas/indx-bovespa/?intraday&size=600")
t = uol.read()
html = etree.HTML(t)
tr_nodes = html.xpath(".//*[@id='main']/table/tbody/tr")
td_content = [[td.text for td in tr.xpath('td')] for tr in tr_nodes]

我从Stack Overflow中阅读了以下问题:

蟒蛇刮路透社网站...糟糕的xpath?

并尝试了适合我需求的解决方案:

import lxml
import lxml.html
import lxml.etree
url = 'http://economia.uol.com.br/cotacoes/bolsas/indx-bovespa/?intraday&size=600'
content = lxml.html.parse(url)
item = content.xpath(".//*[@id='main']/table/tbody/tr/td")
ticker = [thing.text for thing in item]
print ticker

出现了同样的问题。事实上,当我尝试将整个 url 内容写入文本文件时,我找不到要抓取的 td 节点。它可能是我使用的库无法抓取的 dinamic 表/表单,还是只是我的无知?提前致谢

查看源代码时,您可以知道实际 HTML 中没有<table>元素。这意味着Python正在抓取的源代码缺少您正在寻找的任何元素。表内容很可能是在 Javascript 加载页面后插入的。

您可能需要一个无头浏览器来相应地下载和更新内容,或查找表的直接来源。

最新更新