这个方法现在已经失效,据说是cloudflare只要稍有改进就会失效。期待作者更新
import cfscrape
scraper = cfscrape.create_scraper(delay=10) # 可以设置延迟时间
res = scraper.get(u, headers=headers) # 发起请求的方式和requests相同
这个库来自GitHub - fake-useragent/fake-useragent: Up-to-date simple useragent faker with real world databasehttps://github.com/fake-useragent/fake-useragent用法如下:
from fake_useragent import UserAgent
ua = UserAgent()
ua1 = ua.random
print(ua1) # 可以看到每次都调用不同的ua
headers = {
'User-Agent': str(ua1),
'cookie': bytedatas,}
可以说是最质朴的方法了。缺点是会大幅降低爬虫速度。需要自己拿捏获取数据的速度和被屏蔽之间的平衡。目前我用的是每个网页7-10秒,每10页休息30-40秒
import time
import random
import requests
for u in urls:
res = requests.get(u,headers=headers)
# 中间省略
time.sleep(random.randint(7,10))
requests设置延迟加载,禁止重定向等
res = requests.get(url,timeout=20,allow_redirects=False)
目前就是勉强用time.sleep()的方法运行着,过几十个就要改一下所请求的网址,同时写入日志,再对日志进行数据提取。