UA代理:
步骤:
1.将user_agent_list(ua代理池) 放在settings文件中
user_agent_list={
}
2.在middewares.py中生成一个类,并在类下定义获取代理ua的函数
from .settings import user_agent_list
class UAMiddleware:
def process_request(self,request,spider):
request.headers['User-Agent'] =random.choice(user_agent_list) #random.choice 通过该函数 每次随机从代理池中取一个ua
#上面注意User-Agent 中要用'-'连接
3. 2.将定义好的类注册到setting.py的 第53行的DOWNLOADER_MIDDLEWARES下
DOWNLOADER_MIDDLEWARES = {
# "dl_test.middlewares.DlTestDownloaderMiddleware": 543,
"dl_test.middlewares.UAMiddleware": 545,
}
4. 3.在scrapy项目文件中通过print(response.request.headers['User-Agent'])查看代理
def parse(self, response):
print(response.request.headers['User-Agent'])
IP代理:
步骤:
1.在middewares.py中生成一个类,并在类下定义获取代理ip的函数
class IPMiddleware:
def process_request(self,request,spider):
url='' #用于获取代理ip的url
res=requests.get(url) #获取到代理ip地址 183.xxx.xxx.xxx
data='https://'+res.text #因为上面生成的res是一个对象 所以要用.text来得到数值 https://183.xxx.xxx.xxx
request.meta['proxy']=data #通过meta.[proxy] 将代理ip绑定到该scrapy项目中
2.将定义好的类注册到setting.py的 第53行的DOWNLOADER_MIDDLEWARES下
DOWNLOADER_MIDDLEWARES = {
# "dl_test.middlewares.DlTestDownloaderMiddleware": 543,
"dl_test.middlewares.IPMiddleware":544,
}
3.在scrapy项目文件中通过print(response.ip_address)查看代理
def parse(self, response):
print(response.ip_address)
推荐:liuguan