Python 无法从网页分析页面源中可用的字段

Python 无法从网页分析页面源中可用的字段,python,json,python-3.x,web-scraping,python-requests,Python,Json,Python 3.x,Web Scraping,Python Requests,我用python创建了一个脚本来解析网页中的两个字段。我感兴趣的字段是javascript加密的。但是,它们在json数组的页面源代码中可用。下面的脚本可以从该页面生成json数组,但我无法从中挖掘出所需的字段 导航到该页面后,只需按季度单击此选项卡,即可查看字段在此处的显示方式: 到目前为止,我已经尝试过: import re import json import requests url = 'link has been given above' res = requests.get(u

我用python创建了一个脚本来解析网页中的两个字段。我感兴趣的字段是javascript加密的。但是,它们在json数组的页面源代码中可用。下面的脚本可以从该页面生成json数组,但我无法从中挖掘出所需的字段

导航到该页面后,只需按季度单击此选项卡,即可查看字段在此处的显示方式:

到目前为止,我已经尝试过:

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

季度数据在dict中很深,但您可以这样获取:

jsoncontent['context']['dispatcher']['stores']['QuotesSummaryStore']['earnings']['FinancialChart']['quarterly']

返回: [{'date':'3Q2018','revenue':{'raw':6290000000,'fmt':'62.9B','longFmt':'6290000000},'收益':{'raw':14125000000,'fmt':'14.12B','longFmt':'14125000000'},{'date':'4Q2018','revenue':{'raw':84310000000,'fmt':'84.31B','longFmt':'84310000000,'收益:'{'raw':19965000000,'fmt':'19.96B','longFmt':'19965000000'},{'date':'1Q2019','revenue':{'raw':58015000000,'fmt':'58.02B','longFmt':'58015000000'},'收益:{'raw':1156100000,'fmt':'11.56B','longFmt':'1156100000},{'date':'2Q2019','revenue':{'raw':53809000000,'fmt':'53.81B','longFmt 53800000},收益:{'raw':10044000000,'fmt':'10.04B','longFmt':'10044000000'}]

然后到你的住处,你可以循环:

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

我正在努力解决这个问题。您当前的脚本没有返回有效的json,但页面上的json是有效的。您可以使用类似于遍历树的工具,找出数据可能在哪里。在我的情况下,脚本确实返回了有效的json响应。奇怪!!啊,这是一个引号问题,jsonlint喜欢如何处理它。总之,一个在下面的回答中,jsonview.stack.hu是向下搜索所必需的。它抛出此错误quarter=jsoncontent['context']['dispatcher']['stores']['Englishes']['FinancialChart']['quarterly']['quarterly']KeyError:'Englishes'您在此处粘贴的名称中缺少QuotesSummary存储printjsoncontent['context']['dispatcher']['stores']['QuotesSummary']['Englishes']['FinancialChart']['quarterly']KeyError:'earnings'它仍在我这边工作-也许重新运行您的初始脚本以重置jsoncontent?另外,打印jsoncontent['context']['dispatcher']['stores']['QuotesSummaryStore']并查看其中包含的内容?jsonviewer.stack.hu可能更容易一些