【发布时间】:2016-07-03 21:44:30
【问题描述】:
我使用下面的代码从网站读取表格。 对于第一个示例,一切都按预期工作。 对于第二个示例(注释变量),我只得到第一列。我找不到它的原因。有人可以帮忙吗?
创建更好的表格输出的简单方法也是不错的。
import urllib2
import pprint
from bs4 import BeautifulSoup
URL = 'http://www.proplanta.de/Markt-und-Preis/MATIF-Raps/'
TABLENR = 36
#URL = 'http://www1.chineseshipping.com.cn/en/indices/ccfinew.jsp'
#TABLENR = 4
req = urllib2.Request(URL, headers={'User-Agent' : "My Browser"})
con = urllib2.urlopen( req )
html = con.read()
soup = BeautifulSoup(html)
tables = soup.find_all('table')
data = []
rows = tables[TABLENR].find_all('tr')
for row in rows:
cols = row.find_all('td')
cols = [ele.text.strip() for ele in cols]
data.append([ele for ele in cols if ele]) # Get rid of empty values
pprint.pprint (data)
【问题讨论】:
-
在你的第二个例子中(我没有检查第一个),其他列中的数据是由javascript生成的
-
好的 - 这解释了这个问题。关于如何阅读表格有什么建议吗?
-
我认为标准的解决方案是使用 Selenium、phantomJS、Ghostery 或其他一些 javascript 引擎或“机器人浏览器”。我对它们中的任何一个都不太了解,但只是不断听到这三个被描述为抓取 JS 内容的直接解决方案。但更好的是,也许您可以直接访问该站点的 API。如果幸运的话,它会返回格式良好的 json 或 xml
-
@robvoi 是的,你很幸运。 API 返回jsonp data :)
标签: python