【问题标题】:Can't webscrape using Python and beautiful soup不能用 Python 和美汤爬网
【发布时间】:2019-12-10 14:20:05
【问题描述】:

我正在尝试做一些网页抓取(用于使用 Python udemy 自动化无聊的东西课程),但我不断收到 HTTPError: 403 Client Error: HTTP Forbidden for url: 错误。这是我一直在使用的代码:

import bs4
import requests
ro = requests.get('https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/')
ro.raise_for_status()

这是我收到的错误消息:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    ro.raise_for_status()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: HTTP Forbidden for url: https://www.carsales.com.au/cars/details/2012-mazda-3-neo-bl-series-2-auto/SSE-AD-6368302/

我在网上阅读了有关更改用户代理的信息,但我也不明白那是什么或如何做到这一点。有人可以在这里提供一些帮助吗?我完全迷失了,我似乎无法在任何地方获得任何网络抓取信息。如果有帮助的话,我在 Mac 上。谢谢。

【问题讨论】:

    标签: python python-requests http-status-code-403


    【解决方案1】:

    requests 包允许你改变你的用户代理,这会让服务器认为你是一个不同的浏览器。

    import requests
    from bs4 import BeautifulSoup
    
    headers = {'User-Agent': 'Mozilla/5.0'}
    ro = requests.get('https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/', headers=headers)
    ro.raise_for_status()
    
    soup = BeautifulSoup(ro.text, 'html.parser')
    print(soup.prettify())
    

    【讨论】:

      【解决方案2】:

      首先,我建议用 if 语句或 switch-case 语句将 ro.status_code 替换为 ro.raise_for_status(),但是,如果您想使用 ro.raise_for_status(),您可能希望在 try-catch 块中使用它。关于错误,亚马逊似乎阻止了具有默认 requests 模块用户代理的请求,为了克服这个问题,您可能需要将用户代理更改为:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36,有关实现此功能的更多信息,请查看this 页面,使用 Python 请求部分。

      P.S:请务必检查网页抓取亚马逊是否合法。

      【讨论】:

        猜你喜欢
        • 2017-09-11
        • 1970-01-01
        • 2021-12-15
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 2022-08-19
        • 1970-01-01
        相关资源
        最近更新 更多