【发布时间】:2022-02-13 07:19:20
【问题描述】:
我有一个关于 bs4 的简单问题,我似乎无法弄清楚。
作为参考,我是自学成才的,并且正在通过学习 python 排除故障。
所以基本上我正在进行的一个更大项目的一部分需要我抓取一个网站以获得 1 个月国库券的最新利率。我能够完成 99% 的任务,但其中一个方面我被卡住了。
基本上这些数据只在周一至周五更新。在当天或周末更新站点之前的上午 8 点运行此代码会返回错误。使用已更新的日期时,我可以获得所需的确切数据。
所以我将变量 d1、d2 和 d3 设置为今天、昨天和两天前。我想用我的 soup.find 搜索今天,如果没有搜索昨天,然后搜索两天前。
例如,在我的代码中,如果我使用 text=d3,我会得到一个返回值。
这是我现在所拥有的,非常感谢一些帮助!
from bs4 import BeautifulSoup
import requests
from datetime import date
import datetime
today = date.today()
d1 = today.strftime("%B %d, %Y")
ndays1 = datetime.timedelta(days = 1)
d2 = (today-ndays1).strftime("%B %d, %Y")
ndays2 = datetime.timedelta(days = 2)
d3 = (today-ndays2).strftime("%B %d, %Y")
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/71.0.3578.98 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.5',
'DNT': '1', # Do Not Track Request Header
'Connection': 'close'
}
url_rfr = "https://ycharts.com/indicators/1_month_treasury_rate"
response = requests.get(url_rfr, headers=headers, timeout=5).text
soup = BeautifulSoup(response, 'html.parser')
div = soup.find("td", text=d1 or d2 or d3).find_next_sibling("td").text.strip()
r = (float(div[:-1]))
print(r)
【问题讨论】:
-
你想要的输出是什么?
-
我的意思是如果你总是不想获得最近 3 天的价值或其他东西
-
我唯一想要的结果是上次报告的浮动汇率,所以我可以在其他地方用它做一些计算
-
我想搜索今天,如果不是今天,昨天,如果不是昨天,那么两天前是最好的路线
-
那你为什么不把
Last Value刮到Stats呢?
标签: python html parsing beautifulsoup