无法使用请求模块抓取某些网页内容

时间:2021-06-30 19:46:56

标签: python-3.x python-requests

我正在尝试按照 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/

2 个答案:

答案 0 :(得分:1)

我建议您添加标头,包括 User-Agent 和其他一些标头,例如 Accept、Content-Type 等等。 原理是在浏览器中的网络选项卡中,看看它说的是什么,然后在python中进行。例如,下图 enter image description here

将会

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