为什么用scrapy爬数据会被反扒发现,使用requests就没有问题?

url = "https://news.51cto.com/"  
headers = {  
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",  
}  
text = requests.get(url, headers=headers).text  
print(text)

// 使用requests请求headers加个user-agent就能爬到数据
class SetHeaderDownloaderMiddleware(object):  
    def process_request(self, request, spider):  
        request.headers.setdefault("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")

//scrapy 添加了一个headers的中间件
scrapy shell https://news.51cto.com

scrapy 就被反扒的程序发现?

image
是什么原因?

阅读 4.2k
1 个回答

反扒机制很多,对于请求头的限制是一般的限制手段,你保证了请求头相同,但是requests和scrapy有其他不同机制,举个例子:①网站会对同一IP一段时间内请求次数进行监控,而scrapy会开多线程,频繁请求等,但是requests是你运行一次程序才访问一次,不会频繁访问
以上只是一个例子,你最好去除scrapy和requests的区别,控制变量,排除因素

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题