【问题标题】:How to avoid 403 problem using BeautifulSoup and headers?如何使用 BeautifulSoup 和 headers 避免 403 问题?
【发布时间】:2020-08-10 00:52:35
【问题描述】:

我正在使用 requestbeautifulsoup 的组合在 python 中开发网络抓取程序。 不幸的是,我遇到了 403 问题(即使使用 header)。 这是我的代码:

from bs4 import BeautifulSoup
from requests import get

headers_m = ({'User-Agent':
            'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'})
sapo_m = "https://www.idealista.it/vendita-case/milano-milano/"

response_m = get(sapo_m, headers=headers_m)    

【问题讨论】:

  • 这是你的完整代码吗?
  • 显然不是,只是网页端试图“进入”的部分。

标签: python web-scraping beautifulsoup request


【解决方案1】:

只需将Chrome 用作User-Agent

from bs4 import BeautifulSoup
BeautifulSoup(requests.get("https://...", headers={"User-Agent": "Chrome"}).content, 'html.parser')

【讨论】:

    【解决方案2】:

    这不是一般的 python 问题。该网站阻止了这种简单的抓取尝试,您需要找到一组可以通过验证的标头(特定于该网站)。

    问候,

    【讨论】:

    • 有没有办法找到/寻找一组特定的标题?
    • 我刚刚尝试了以下方法并且成功了: - 在浏览器中打开网站(我使用的是 chromium) - 打开“检查”视图(也可能称为“开发者”) - 转到网络选项卡 - 选择您的浏览器发送到网站的“请求标头”
    • 代码:headers_m={ 'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en-US,en;q=0.9', 'cache-control': 'max-age=0', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36' }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2011-04-06
    • 2018-06-27
    • 1970-01-01
    相关资源
    最近更新 更多