从静态网页获取特定项目时遇到问题

2024-09-28 18:11:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图只解析网页中表中的currencies,但从该站点得到的结果完全不同。缺少的currenciespage source中可用,因此它们是静态的。我哪里出错了?This link与我在another post中使用的不同。为了清楚起见,我想提一下。你知道吗

Site address

我试过:

import requests
from bs4 import BeautifulSoup

URL = "https://www.forexfactory.com/calendar.php?day=today"

res = requests.get(URL,headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select("tr.calendar_row"):
    currency = item.select_one("td.calendar__currency").get_text(strip=True)
    print(currency)

我得到的输出(与该站点中可用的输出非常不同):

JPY
JPY
EUR
EUR
GBP
GBP
GBP
EUR
EUR
GBP
USD
USD
USD
GBP
JPY
AUD
AUD
CNY
CNY
CNY
CNY

如何使用请求从该站点获取所有货币?


Tags: importurlget站点reseurrequestscalendar
1条回答
网友
1楼 · 发布于 2024-09-28 18:11:33

cookies决定了某种形式的验证,从而决定了您看到的结果。你只需要另一个答案中的两个。如果省略第二个,例如下面显示的那些,您的窗口将切换到5:30am开始(仍然返回相同数量的结果),这是默认的返回-选择除1之外的任何其他值作为“ffverifytimes”,您将得到相同的窗口。我假设这是一个调整,以时间意识为地区的主页?你知道吗

如果省略“ffdstonoff”,窗口将切换到凌晨2:30开始。你知道吗

添加cookie“fftimezoneoffset”:“1”,您可以将窗口切换到前一天的11:45开始。你知道吗

import requests
from bs4 import BeautifulSoup as bs

cookies={ 
    "ffdstonoff":"1", 
    "ffverifytimes":"1"
}
r = requests.get('https://www.forexfactory.com/calendar.php?day=today', cookies = cookies)
soup = bs(r.content, 'lxml')
currencies = [item.text.strip() for item in soup.select('.currency')]
print(currencies)

相关问题 更多 >