gpt4 book ai didi

python - 使用Python从html中提取列(Beautifulsoup)

转载 作者:行者123 更新时间:2023-12-01 03:54:33 24 4
gpt4 key购买 nike

我需要从此页面提取信息 - 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' 标记的项目?。另外,Change % 还可以有 redFont 和 greenFont 类。其他列用 标记。 如何提取它们?

有没有办法从表中提取列?

理想情况下,我想要一个包含日期、价格、开盘价、最高价、最低价、变化百分比列的日期框架。

谢谢

最佳答案

如何解析该站点的表格我已经回答过 here但由于您想要一个 DataFrame,只需使用 pandas.read_html

url = 'http://www.investing.com/currencies/usd-brl-historical-data'
r = requests.get(url)


import pandas as pd

df = pd.read_html(r.content,attrs = {'id': 'curr_table'})[0]

这会给你:

            Date   Price    Open    High     Low Change %
0 Jun 08, 2016 3.3609 3.4411 3.4465 3.3584 -2.36%
1 Jun 07, 2016 3.4421 3.4885 3.5141 3.4401 -1.36%
2 Jun 06, 2016 3.4896 3.5265 3.5295 3.4840 -1.09%
3 Jun 05, 2016 3.5280 3.5280 3.5280 3.5280 0.11%
4 Jun 03, 2016 3.5240 3.5910 3.5947 3.5212 -1.91%
5 Jun 02, 2016 3.5926 3.6005 3.6157 3.5765 -0.22%
6 Jun 01, 2016 3.6007 3.6080 3.6363 3.5755 -0.29%
7 May 31, 2016 3.6111 3.5700 3.6383 3.5534 1.11%
8 May 30, 2016 3.5713 3.6110 3.6167 3.5675 -1.11%
9 May 27, 2016 3.6115 3.5824 3.6303 3.5792 0.81%
10 May 26, 2016 3.5825 3.5826 3.5857 3.5757 -0.03%
11 May 25, 2016 3.5836 3.5702 3.6218 3.5511 0.34%
12 May 24, 2016 3.5713 3.5717 3.5903 3.5417 -0.04%
13 May 23, 2016 3.5728 3.5195 3.5894 3.5121 1.49%
14 May 20, 2016 3.5202 3.5633 3.5663 3.5154 -1.24%
15 May 19, 2016 3.5644 3.5668 3.6197 3.5503 -0.11%
16 May 18, 2016 3.5683 3.4877 3.5703 3.4854 2.28%
17 May 17, 2016 3.4888 3.4990 3.5300 3.4812 -0.32%
18 May 16, 2016 3.5001 3.5309 3.5366 3.4944 -0.96%
19 May 13, 2016 3.5340 3.4845 3.5345 3.4630 1.39%
20 May 12, 2016 3.4855 3.4514 3.5068 3.4346 0.95%
21 May 11, 2016 3.4528 3.4755 3.4835 3.4389 -0.66%
22 May 10, 2016 3.4758 3.5155 3.5173 3.4623 -1.15%
23 May 09, 2016 3.5164 3.5010 3.6766 3.4906 0.40%

您通常可以直接传递网址,但我们使用 urllib2(这是 read_html 使用的库)针对此特定站点收到 403 错误所以我们需要使用请求来获取该 html。

关于python - 使用Python从html中提取列(Beautifulsoup),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37714116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com