首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BeautifulSoup -减速requests.get

BeautifulSoup -减速requests.get
EN

Stack Overflow用户
提问于 2021-12-09 20:40:57
回答 2查看 278关注 0票数 0

希望有人知道答案。

我试着刮一个特定的网站。

问题是,requests.get(url)非常快速地抓取所有东西。

所以我被堵住了。

它们是减缓requests.get(url)的一种方法吗?

谢谢你的帮助。

代码语言:javascript
复制
from bs4 import BeautifulSoup
import requests
url = 'website.fr'
response = requests.get(url)
print(response)

打印结果:当你使用这个网站时,你的浏览器或行为让我们觉得你可能是个机器人。解决下面的captcha以继续浏览站点.

EN

回答 2

Stack Overflow用户

发布于 2021-12-09 21:37:50

您应该配置一个超时,看看刮板是否适合您。

代码语言:javascript
复制
r = requests.get('https://github.com', timeout=5)

https://docs.python-requests.org/en/latest/user/advanced/#timeouts

票数 1
EN

Stack Overflow用户

发布于 2021-12-09 21:31:41

Note虽然没有关于url的信息,但是很难复制

第一步可能是向请求中添加一些headers --这不会减慢速度,但会显示“将有浏览器”。替代方法是使用selenium。

示例

代码语言:javascript
复制
from bs4 import BeautifulSoup
import requests
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae", 
    "X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
url = 'https://www.france.fr/fr'
response = requests.get(url, headers = headers)
print(response)

输出

代码语言:javascript
复制
<Response [200]>

如果要迭代urls,还可以使用time模块添加相同的延迟:

代码语言:javascript
复制
from bs4 import BeautifulSoup
import requests, time

...

for url in urls:
    time.sleep(3)
    response = requests.get(url, headers = headers)
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70296454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档