scrapy实践之随机请求头、随机ip和模拟登陆
如何设置随机的user-agent头以及随机IP
随机user-agent
这一块我们可以直接在settings里面设置,但是settings里面是只有一个的,网上也有在settings里面随机的,我试了之后没发现什么效果,大家可以自行验证后来补充
这次记的主要是如何在middlewares里面设置
我们打开middlewares.py
文件,里面是一个类,类里面的函数虽然都声明了,但是都是空的,也就是middlewares里面其实是什么都没写的,这些函数也只是声明好,便于引导我们写代码,大家想进行什么操作是不用局限于里面的代码的,完全可以全删掉自己重写。
我们如果想随机切换user-agent
,我们首先要建立一个user-agent池,这里也顺带教一下如何查看user-agent。
user-agent池网上自己找一下就有
我们之前提到过中间件是有两个的,一个是spider中间件,另一个是下载中间件。下载中间件在爬虫中间件之后,所以如果两个中间件都写了的话,是以后运行的为准的,也就是同一个属性,下载中间件中设置的会覆盖爬虫中间件的。
import random
class TestForScrapyAgentMiddleware(object):
def __init__(self):
self.user_agent_list = [
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6',
'Mozilla/5.0 (X11; Linux i686; U;) Gecko/20070322 Kazehakase/0.4.5',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)',
'Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20',
'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.8) Gecko Fedora/1.9.0.8-1.fc10 Kazehakase/0.5.6',
'Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10'