遇到的问题
当我们第一次访问使用 CloudFlare 加速的网站时,网站就会出现让我们等待 5 秒种的提示
解决方法:
方法一、使用浏览器模拟技术请求目标网站,例如:Selenium
方法二、一个专门为了绕过这个 CloudFlare 开发的 Python 库 cloudscraper
本文重点介绍----方法二
用上它就可以无感爬取使用了 CloudFlare 的网站,使用这个库非常简单
第一步 安装
pip install cloudscraper
二步 基础使用
文档 https://pypi.org/project/cloudscraper/
import cloudscraper
scraper = cloudscraper.create_scraper() # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper() # CloudScraper inherits from requests.Session
print scraper.get("http://somesite.com").text # => "<!DOCTYPE html><html><head>..."
实例----scrapy框架 + cloudscraper
spider.py
def start_requests(self):
self.browser = cloudscraper.create_scraper(browser={'browser': 'chrome', 'mobile': False})
yield scrapy.Request(url=url, callback=self.parse)
middlewares.py
def process_response(self, request, response, spider):
if response.status == 503:
if spider.name == "mmtimes_new":
url = request.url
req = spider.browser.get(url, headers={'referer': url})
time.sleep(5)
return HtmlResponse(url=url, body=req.text, encoding="utf-8", request=request)
return response
网友评论