python列表美汤网页抓取问题



我对python和编程完全陌生。目前,我正在玩一个漂亮的汤库,我试图从网站上提取一些火锅数据。最后,我得到了一份清单,上面列出了我感兴趣的所有数据(顶级持股、顶级国家和顶级行业(。对于这些类别中的每一个,我都得到了一个类似的列表(或者更好的bs4.element.ResultSet(

[<div class="fw--chart fwwBreakdown" data-breakdown='{"series":[{"name":"APPLE INC","data":[3.43]},
{"name":"Microsoft Corp","data":[2.77]},{"name":"AMAZON COM INC","data":[2.18]},{"name":"ALPHABET INC
CL C","data":[1.04]},{"name":"FACEBOOK CLASS A INC","data":[1.03]},{"name":"Alphabet Inc Class 
A","data":[0.99]},{"name":"Taiwan Semiconductor Manufacturing Co Ltd","data":[0.88]},{"name":"Tesla 
Motors Inc.","data":[0.83]},{"name":"Tencent Holdings Ltd.","data":[0.82]},{"name":"JPMORGAN CHASE  
CO","data":[0.76]}]}' id="fund-topholdings"> </div>,

我的问题是:上面的代码是我列表中的一个元素。下一个元素看起来很相似,但数据是针对计数器的,然后我有一个针对扇区的进一步元素。

将资产名称(苹果、微软…以及百分比3.43、2.77…(放入列表或Panda DataFrame中的最佳方法是什么?

到目前为止,整个代码是:

from bs4 import BeautifulSoup
import requests
import pandas as pd
asset_isin = "IE00BGHQ0G80"
url = f"https://www.fondsweb.com/de/{asset_isin}"
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
data = soup.find_all("div", attrs={"class":"fw--chart fwwBreakdown"})
top_holdings = data[0]
top_countires = data[1]
top_sectors = data[2]

因此,对于data[0],我得到上面的输出,从[div class=…开始,但都是element[0]。

提前感谢

我不确定您需要什么,但请参阅以下内容。。。

# coding: UTF-8
import pandas as pd
from bs4 import BeautifulSoup
import requests
import json
asset_isin = "IE00BGHQ0G80"
url = f"https://www.fondsweb.com/de/{asset_isin}"
page = requests.get(url)
soup = BeautifulSoup(page.content, "html.parser")
charts = soup.select('div.fw--chart.fwwBreakdown')
data = {'name': [], 'data': []}
for d in charts:
o = json.loads(d['data-breakdown'])
for s in o['series']:
data['name'].append(s['name'])
data['data'].append(s['data'][0])
df = pd.DataFrame(data)
print(df)

最新更新