Dom*_*vic 4 python http request web-scraping python-requests
我正在尝试抓取某个网站,我们将其称为“https://some-website.com”。在过去的几个月里,我能够毫无问题地做到这一点,但几天前我注意到抓取工具不再工作,因为所有请求都返回 403 禁止状态。
在过去的三个月里,我使用下面的代码来抓取数据。
import requests
from fake_useragent import UserAgent
res = requests.get(<url>, headers={'User-Agent': UserAgent().random})
Run Code Online (Sandbox Code Playgroud)
这总是返回一个很好的 200 OK 和我需要的页面。直到几天前,我开始收到 403 Forbidden 错误。在返回文本中的某处,我可以发现一句话“启用 JavaScript 和 cookies 以继续”。
正如您在代码中看到的,我已经随机切换了用户代理标头,这通常是解决此类问题的建议。
当然,我怀疑他们将我的 IP 列入黑名单(可能与某些用户代理结合使用,不允许我抓取)。然而,我实现了一个使用代理的解决方案,但仍然得到 403。
import requests
from fake_useragent import UserAgent
proxies = {
"https": f'http://some_legit_proxy',
"http": f'http://some_legit_proxy',
}
res = requests.get(<url>, headers={'User-Agent': UserAgent().random}, proxies=proxies)
Run Code Online (Sandbox Code Playgroud)
该代理是住宅代理。
最让我困惑的是,如果我删除随机用户代理部分并使用默认请求用户代理,那么抓取会突然起作用。
import requests
res = requests.get(<url>) # 'User-Agent': 'python-requests/2.28.1'
# 200 OK
Run Code Online (Sandbox Code Playgroud)
这告诉我,这并不意味着网站突然需要 javascript,因为抓取确实有效,只是看起来它们以某种方式阻止了我。
我有一些想法来解决这个问题,但由于我不明白这是如何发生的,所以我无法确定这在未来是否可以扩展。
请帮助我了解这里发生了什么。
| 归档时间: |
|
| 查看次数: |
1818 次 |
| 最近记录: |