gpt4 book ai didi

python - 无法使用请求解析网页的确切结果

转载 作者:行者123 更新时间:2023-12-03 19:31:26 25 4
gpt4 key购买 nike

我在 python 中创建了一个脚本来解析网页中的两个字段 - total revenue它是关于 date .我所追求的字段是 javascript 加密的。它们在 json 数组中的页面源中可用。以下脚本可以相应地解析这两个字段。

但是,问题是该页面中可见的日期与页面源中可用的日期不同。

Webpage link

该网页中的日期类似于 this

页面源中的日期类似于 this

显然有一天的变化。

访问后 webpage 当您单击此选项卡时 Quarterly 你可以在那里看到结果:

我试过:

import re
import json
import requests

url = 'https://finance.yahoo.com/quote/GTX/financials?p=GTX'

res = requests.get(url)
data = re.findall(r'root.App.main[^{]+(.*);',res.text)[0]
jsoncontent = json.loads(data)
container = jsoncontent['context']['dispatcher']['stores']['QuoteSummaryStore']['incomeStatementHistoryQuarterly']['incomeStatementHistory']
total_revenue = container[0]['totalRevenue']['raw']
concerning_date = container[0]['endDate']['fmt']
print(total_revenue,concerning_date)

我得到的结果(收入以百万计):
802000000 2019-06-30

我希望得到的结果:
802000000 2019-06-29

当我尝试使用此代码时 AAPL , 我得到了确切的日期,所以减去或添加一天不是一种选择。

我如何从该站点获取确切日期 ?

顺便说一句,我知道如何使用 Selenium 来获取它们,所以我只想坚持 requests .

最佳答案

如评论中所述,您需要将日期转换为适当的时区(EST),这可以通过 datetime 和 dateutil 来完成。 .

这是一个工作示例:

import re
import json
import requests
from datetime import datetime, timezone
from dateutil import tz

url = 'https://finance.yahoo.com/quote/GTX/financials?p=GTX'

res = requests.get(url)
data = re.findall(r'root.App.main[^{]+(.*);',res.text)[0]
jsoncontent = json.loads(data)
container = jsoncontent['context']['dispatcher']['stores']['QuoteSummaryStore']['incomeStatementHistoryQuarterly']['incomeStatementHistory']
total_revenue = container[0]['totalRevenue']['raw']

EST = tz.gettz('EST')
raw_date = datetime.fromtimestamp(container[0]['endDate']['raw'], tz=EST)
concerning_date = raw_date.date().strftime('%d-%m-%Y')
print(total_revenue, concerning_date)

关于python - 无法使用请求解析网页的确切结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58300597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com