我正在尝试按照 Automate the Boring Stuff 的教导从网络上抓取一些内容。我想知道如何解决 503 服务器错误 下面是代码片段。不仅是这个特定的 URL,而且我尝试的几乎所有 URL 都会引发此错误。
import requests
re = requests.get('http: //www.amazon.com/Automate-Boring-Stuff-Python-2nd/dp/1593279922/')
re.raise_for_status()
requests.exceptions.HTTPError: 503 Server Error: Service Unavailable for url: https://www.amazon.com/Automate-Boring-Stuff-Python-2nd/dp/1593279922/
答案 0 :(得分:1)
我建议您添加标头,包括 User-Agent 和其他一些标头,例如 Accept、Content-Type 等等。 原理是在浏览器中的网络选项卡中,看看它说的是什么,然后在python中进行。例如,下图
将会
requests.get(..., headers={
"Accept": "*/*",
"Content-Type": "..."
}
)
等
答案 1 :(得分:1)
您可以使用用户代理消除错误。
headers =
{
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
}
import requests
res = requests.get('http://www.amazon.com/Automate-Boring-Stuff-Python-2nd/dp/1593279922/', headers=headers)
res.raise_for_status()
话虽如此,请记住,某些网站不允许未经许可进行自动化活动。如果您仔细查看您的这个特定案例的回复,您会发现这一行。
“要讨论自动访问亚马逊数据,请联系 api-services-support@amazon.com”
因此,虽然有些网站允许抓取和抓取,但有些则不允许。 您可以检查任何网站的 robots.txt 路由,以了解哪些是允许的,哪些是不允许的。例如:https://www.amazon.com/robots.txt