我正在编写一个应该采用折扣结束日期的解析器,但出于某种原因,采用了网站的英文版本,尽管在标头中指定了接受语言。请帮忙解析俄罗斯数据!
import requests
from bs4 import BeautifulSoup
import re
def get_data(url):
headers = {
'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/112.0.0.0 Safari/537.36'
}
req = requests.get(url, headers)
soup = BeautifulSoup(req.text, 'lxml')
date = soup.find('p', class_='game_purchase_discount_countdown').text
regex_pattern = r'(\d{1,2})\s+(\w+)'
match = re.search(regex_pattern, date)
if match:
day = match.group(1)
month = match.group(2).capitalize()
print(f"{day} {month}")
get_data("https://store.steampowered.com/app/552500/Warhammer_Vermintide_2/")
结论:
25 April
@Daniil Loban,你是徒劳的,当然......这里的一切都很好,而且非常简单,不像这个问题,课程是通过后端设置加载的。并使用 Selenium 进行解析 - 好吧,就是这样。
在那里,一切都很棒。
让我们重复最少的代码:
结论:
可预测。
如您所见,我什至没有理会标题。现在,让我们看看当您登录 Steam 并更改语言时会发生什么!不用挖很久,我们进去狐狸看cookie,有招摇的名字
Steam_Language
。我们拿起它并添加一个 cookie,我在这里更详细地讨论了它们的创建。我们再次获得页面、解析器、正则表达式和‥ 我们得到April 25,干杯!
选择
但是,正如您被正确告知的那样,如果它根本无法解决问题,那么您需要寻找替代方案。好吧,例如,翻译:
结论:
总的来说,到这里就可以完成答案了,我们得到了我们想要的,我们用cookies得到的更早,但是因为 我们心爱的俄语既美妙又复杂,翻译时可能不会那么美妙,例如,如果您删除25或翻译者没有猜出正确的大小写:
结论:
巴赫,四月。
主格。事实上,这种情况不仅在翻译中很流行。可以做什么?
使用pymorphy:
结论:
所以,我们使用 cookies 并且知道如何替代 🥰
更新程序
在关闭浏览器之前,我再次查看了那里有什么 cookie。结果也很有趣
timezoneOffset
,我建议也添加它,因为。处理日期。