为什么用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 就被反扒的程序发现?

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


回答:

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

以上是 为什么用scrapy爬数据会被反扒发现,使用requests就没有问题? 的全部内容, 来源链接: utcz.com/p/937742.html

回到顶部