首页 > 解决方案 > 无法从网页解析页面源中可用的字段

问题描述

我在 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 获取它们,所以浏览器模拟器不是我想要遵守的选项。

标签: pythonjsonpython-3.xweb-scrapingpython-requests

解决方案


季度数据在字典中很深,但你可以像这样得到它:

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

推荐阅读