【问题标题】:Inability to scrape some web content using requests module无法使用请求模块抓取一些网页内容
【发布时间】:2021-07-01 04:40:39
【问题描述】:

我正在尝试从网络上抓取一些由 Automate the Boring Stuff 教授的内容。我想知道如何解决 503 服务器错误 下面是代码的sn-p。不仅是这个特定的 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/

【问题讨论】:

  • 是什么让您认为这是可以“解决”的问题?如果 URL 已损坏,您会怎么做?
  • 网址没有损坏,点击即可访问

标签: python-3.x python-requests


【解决方案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

【讨论】:

    【解决方案2】:

    我建议您添加包括 User-Agent 和其他一些标题,例如 Accept、Content-Type 等等。 原理是按照浏览器的网络标签,看它说什么,然后在python中做。例如下图

    将会

    requests.get(..., headers={
        "Accept": "*/*",
        "Content-Type": "..."
        }
    )
    

    等等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2019-04-26
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多