python - 无法从网页解析页面源中可用的字段
问题描述
我在 python 中创建了一个脚本来解析网页中的两个字段。我感兴趣的字段是 javascript 加密的。但是,它们在 json 数组中的页面源中可用。以下脚本可以从该页面生成该 json 数组,但我无法从中挖掘出所需的字段。
导航到该页面后,您需要做的就是单击此选项卡
Quarterly
以查看其在此处显示的字段:
到目前为止我已经尝试过:
import re
import json
import requests
url = 'link has been given above'
res = requests.get(url)
data = re.findall(r'root.App.main[^{]+(.*);',res.text)[0]
jsoncontent = json.loads(data)
print(jsoncontent)
PS 我已经知道如何使用 selenium 获取它们,所以浏览器模拟器不是我想要遵守的选项。
解决方案
季度数据在字典中很深,但你可以像这样得到它:
jsoncontent['context']['dispatcher']['stores']['QuoteSummaryStore']['earnings']['financialsChart']['quarterly']
回报:
[{'date': '3Q2018', 'revenue': {'raw': 62900000000, 'fmt': '62.9B', 'longFmt': '62,900,000,000'}, 'earnings': {'raw': 14125000000, 'fmt': '14.12B', 'longFmt': '14,125,000,000'}}, {'date': '4Q2018', 'revenue': {'raw': 84310000000, 'fmt': '84.31B', 'longFmt': '84,310,000,000'}, 'earnings': {'raw': 19965000000, 'fmt': '19.96B', 'longFmt': '19,965,000,000'}}, {'date': '1Q2019', 'revenue': {'raw': 58015000000, 'fmt': '58.02B', 'longFmt': '58,015,000,000'}, 'earnings': {'raw': 11561000000, 'fmt': '11.56B', 'longFmt': '11,561,000,000'}}, {'date': '2Q2019', 'revenue': {'raw': 53809000000, 'fmt': '53.81B', 'longFmt': '53,809,000,000'}, 'earnings': {'raw': 10044000000, 'fmt': '10.04B', 'longFmt': '10,044,000,000'}}]
然后要进入您的季度,您可以循环访问:
quarter = jsoncontent['context']['dispatcher']['stores']['QuoteSummaryStore']['earnings']['financialsChart']['quarterly']
for q in quarter:
print(q) # print all quarters
if q['data'] == "1Q2019":
print(q) # print the quarter you want
推荐阅读
- ios - “在展开可选值时意外发现 nil”添加 UINavigation 时
- python - 编写一个程序,使用 python 打印出前 N 个 emirps,每行五个
- php - 使用 XPath 访问子段落内容
- python - 如何从 pytest 夹具中清除 MySQL 数据库
- python - 将看起来像日期的字符串转换为日期
- c - 简单的 shellcode 不起作用
- java - 如果 E/JavaBinder: !!! Binder 交易失败!!!错误来了?
- python - 附加熊猫系列的有序频率的更快方法
- node.js - HTTPS 还是 JWT 进行身份验证?
- c# - 在c#中保存savefiledialog的流