我正在编写一个脚本,该脚本从whatismybrowser.com
获取用户代理并返回一个随机的用户代理。
由于用户代理很少更改,并且由于我想减少请求数量,因此我认为我可以缓存用户代理,并且每周仅更新一次。
我目前正在通过将所有用户代理转储到JSON文件中的方式来执行此操作,然后在运行脚本时将其加载到内存中。这可以正常工作,但我觉得有一种更有效的Pythonic方法可以做到这一点。
简化的代码版本,没有任何错误处理:
from datetime import datetime
import os
import requests
from bs4 import BeautifulSoup
import json
import random
if (datetime.now() - datetime.fromtimestamp(os.path.getmtime("user_agents.json"))).days >= 7:
r = requests.get("https://developers.whatismybrowser.com/useragents/explore/software_name/chrome/")
html = r.text
soup = BeautifulSoup(html, 'lxml')
rows = soup.find_all("tr")
user_agents = [row.find("a").text for row in rows[1:11]]
with open("user_agents.json", "w") as f:
json.dump(user_agents, f, indent=4)
else:
with open("user_agents.json", "r") as f:
user_agents = json.load(f)
print(random.choice(user_agents))