在scrapy框架中打开settings.py文件,写入
USER_AGENT_LIST = [
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
]
上部分是用户代理列表,具体浏览器信息可以在网上查询添加,然后打开moddlewares.py文件,重新写入类
from .settings import USER_AGENT_LIST
class RandomUserAgent(object):
def process_request(self, request, spider):
ua = random.choice(USER_AGENT_LIST)
request.headers['User_Agent'] = ua
print(ua, '--------------------------------')
可以打印查看用户代理信息,随后返回settings.py文件,找到下载中间件设置,写入
DOWNLOADER_MIDDLEWARES = {
"myBook.middlewares.RandomUserAgent": 543,
}
到此即完成了用户代理的设置,然后操作代理ip,先使用ip列表的方式,与用户代理基本雷同,打开settings.py文件,写入
PROXYS_LIST = [
{"ip_port": "14.27.32.60:3128"},
{”ip_port“: "183.95.80.173:80"},
]
以上的ip信息我是在快代理拿取的免费ip,不稳定,这里用作示范,然后打开moddlewares.py文件,写入代理ip类
from .settings import PROXYS_LIST
class RandomProxy(object):
def process_request(self, request, spider):
proxy = random.choice(PROXYS_LIST)
request.meta['proxy'] = 'http://' + proxy['ip_port']
print(proxy, '*******************************')
可以打印查看ip信息,随后返回settings.py文件,在下载中间件添加
"myBook.middlewares.RandomProxy": 544,
即DOWNLOADER_MIDDLEWARES = {
"myBook.middlewares.RandomUserAgent": 543,
"myBook.middlewares.RandomProxy": 544,
}
当不需要代理的时候注释即可
最后讲一下隧道ip代理,一样的打开settings.py文件,写入
TUNNEL_PROXY =”http://用户名:密码@代理地址:端口“
按要求填入信息即可,然后打开moddlewares.py文件,写入隧道ip类
from .settings import TUNNEL_PROXY
class TunnelProxy:
def process_request(self, request, spider):
request.meta['proxy'] = TUNNEL_PROXY
随后返回settings.py文件,在下载中间件写入
"myBook.middlewares.TunnelProxy": 555,
即DOWNLOADER_MIDDLEWARES = {
"myBook.middlewares.RandomUserAgent": 543,
"myBook.middlewares.RandomProxy": 544,
#"myBook.middlewares.TunnelProxy": 555,
}
因为已经设置ip列表代理了,这里的隧道代理我们注释掉,当我们需要使用隧道的时候打开即可,但是需要关闭ip列表代理,自至此我们完成了用户代理和ip代理的设置