【发布时间】:2022-01-21 19:20:06
【问题描述】:
这是我在 SO 上的第一篇文章,所以请放轻松。
在这个程序中,我试图在一定次数的失败尝试后更改 userAgents。 UserAgents.txt 文件中有一个约 10000 个用户代理的文件,采用 UTF-8 编码。
我正在用 python 编写一个程序,需要从网站上抓取数据。我收到以下错误:
ValueError: Invalid header value b'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36\n'
我意识到字符串前面的“b”表示它是字节编码的。 我遵循的步骤包括:
-
userAgent = userAgent.encode("UTF-8").decode("UTF-8") -
userAgent = str(userAgent) -
userAgent = userAgentFile.readlines()[0] -
userAgentFile = open("UserAgents.txt", "r", encoding="UTF-8") - 我还尝试在标题的定义中定义用户代理。
userAgentFile = open("UserAgents.txt", "r")
userAgent = userAgentFile.readline()
userAgentFile.close();
headerList = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.9",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13",
"X-Amzn-Trace-Id": "Root=1-61be9723-4cd53f9228b4db340a348137"
}
headerList["User-Agent"] = str(userAgent)
#Submit a request to our website, and with our "special" headings.
r = requests.get(f"https://www.reddit.com/r/BreadStapledToTrees/", headers=headerList)
任何帮助将不胜感激!
--另外,我实际上并不是从 r/BreadStapledToTrees 中抓取...
【问题讨论】:
-
程序可以使用您原来的
headerList运行。请从您的UserAgents.txt文件中提供几行。为什么需要更改用户代理? -
我认为问题在于值末尾的换行符 - 您需要在从文件中读取该行后将其删除。