python - 将列表序列转换为字典-python
问题描述
我正在从网站上抓取数据,直到现在,我已经转换为值列表。我希望以字典的形式输出,如果用户输入“open”-“39.30”,如果用户输入“Previous close”,将显示,然后将显示“39.79”。所以我将str类型的文本标签转换为值列表。如何将这些列表转换为字典?
website='https://finance.yahoo.com/quote/AMD?p=AMD&.tsrc=fin-srch-v1'
htmltag = urllib.request.urlopen(website).read()
soups = BeautifulSoup(htmltag,'lxml')
allidtag = soups.find('div', id='YDC-Col1')
alll=allidtag.find_all('table', class_='W(100%)')
for item in alll:
tablerow=item.find_all('tr') #I have collected all the tr tags
for i in tablerow:
s=i.find_all('td')#I have found td tags
for j in s:
a=j.text #extracted the span tags
b=a.split(" ") #converting to lists
print(b)
['Previous', 'Close']
['39.79']
['Open']
['39.30']
['Bid']
['39.03', 'x', '3200']
['Ask']
['39.07', 'x', '1100']
["Day's", 'Range']
['38.83', '-', '39.48']
['52', 'Week', 'Range']
['16.03', '-', '41.79']
['Volume']
['42,197,133']
['Avg.', 'Volume']
['52,798,084']
['Market', 'Cap']
['44.394B']
如果我单独打印“a”,则会出现 str 类型的输出:
Previous Close
39.79
Open
39.30
Bid
39.03 x 4000
Ask
39.07 x 1200
Day's Range
38.82 - 39.48
52 Week Range
16.03 - 41.79
Volume
42,197,133
Avg. Volume
52,798,084
Market Cap
44.394B
Beta (3Y Monthly)
3.06
PE Ratio (TTM)
204.14
EPS (TTM)
0.19
Earnings Date
Jan 27, 2020 - Jan 31, 2020
Forward Dividend & Yield
N/A (N/A)
Ex-Dividend Date
1995-04-27
1y Target Est
35.57
解决方案
如果我是你,我会完全删除最后一个for
循环,如下所示:
key = s[0].get_text()
value = s[1].get_text()
d[key] = value
回报:
{'Previous Close': '39.79', 'Open': '39.30', 'Bid': '39.03 x 3200', 'Ask': '39.15 x 1100', "Day's Range": '38.83 - 39.48', '52 Week Range': '16.03 - 41.79', 'Volume': '42,197,133', 'Avg. Volume': '52,798,084', 'Market Cap': '44.394B', 'Beta (3Y Monthly)': '3.06', 'PE Ratio (TTM)': '204.14', 'EPS (TTM)': '0.19', 'Earnings Date': 'Jan 27, 2020 - Jan 31, 2020', 'Forward Dividend & Yield': 'N/A (N/A)', 'Ex-Dividend Date': '1995-04-27', '1y Target Est': '35.57'}
您不需要遍历td
元素,因为它们的顺序是可预测的。而且我认为没有必要将字符串拆分为列表,因为将它们放在一起更有意义。
推荐阅读
- anylogic - 存放到托盘架时托盘消失
- javascript - 如何使用 Javascript 云功能从 Firebase 实时数据库中随机获取子键名称
- angular - Angular 8:服务中的属性返回未定义
- java - 如何正确使用 Java 中的 Apollo Client 的 RxJava2 库进行同步调用?
- flutter - 启用或禁用通知颤动
- android - 为什么我的获取请求在反应本机时出现问题网络请求错误
- redis - Airflow 是否支持通过 TLS 连接代理 url?
- azure - 来自事件中心的系统日志数据未显示在 Azure 数据资源管理器中
- python - python venv如何管理C++依赖
- minecraft - 服务器重新启动时保存硬币?