我需要从这个页面提取信息-http://www.investing.com/currencies/usd-brl-historical-data。我需要日期,价格,开盘价,高,低,零钱。 我不熟悉Python,所以我在这一步上遇到了困难:
import requests
from bs4 import BeautifulSoup
from datetime import datetime
url='http://www.investing.com/currencies/usd-brl-historical-data'
r = requests.get(url)
soup=BeautifulSoup(r.content,'lxml')
g_data = soup.find_all('table', {'class':'genTbl closedTbl historicalTbl'})
d=[]
for item in g_data:
Table_Values = item.find_all('tr')
N=len(Table_Values)-1
for n in range(N):
k = (item.find_all('td', {'class':'first left bold noWrap'})[n].text)
print(item.find_all('td', {'class':'first left bold noWrap'})[n].text)
我有几个问题:
价格列可以取消标记为或。如何指定要用class='redFont'或/和'greenfont'标记的项目?。同时更改%也可以有redFont和greenFont类。其他列由标记。如何提取它们?
有没有从表中提取列的方法?
理想情况下,我想有一个日期框列日期,价格,开放,高,低,变化%。在
谢谢
如何解析来自那个站点的表我已经回答了here,但是既然你想要一个DataFrame,那么就使用pandas.read_html
这会给你:
^{pr2}$通常,您可以直接传递url,但是我们使用urllib2得到一个403错误,这是read_html使用的lib,因此我们需要使用请求来获取该html。在
下面是一种将html表转换为嵌套列表的方法
解决方案是找到特定的表,然后遍历表中的每个tr,创建该tr中所有项的文本的子列表。在
这将从表中获取所有数据
^{pr2}$如果要将其转换为pandas数据帧,只需抓取表标题并添加它们即可
然后您将得到一个如下所示的数据帧:
相关问题 更多 >
编程相关推荐