2014-01-18 62 views
0

我有麻烦试图在URL从表中抽取数据的特定位点/表工作:的Python刮的XPath不

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

它指的是盘中的市场数据。 基于由萤火虫提供前面的例子和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] 

,我读了堆栈溢出以下问题:

python scraping reuters site...bad 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节点。它可能是一张无法用我使用过的图书馆进行剪辑的动态表格/表格,还是仅仅是我的无知? 在此先感谢

回答

1

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

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