本文分为两部分:

一、HTTP代理的逻辑

做过python爬虫的都知道,HTTP代理的设置时要在发送请求前设置好,那HTTP代理的逻辑点在哪里呢?实际上,只需要在Scrapy 的项目结构中添加就好,具体代码如下:

# Scrapy 内置的 Downloader Middleware 为 Scrapy 供了基础的功能,

# 定义一个类,其中(object)可以不写,效果一样

class SimpleProxyMiddleware(object):

# 声明一个数组

proxyList = ['你购买的HTTP代理地址']

# Downloader Middleware的核心方法,只有实现了其中一个或多个方法才算自定义了一个Downloader Middleware def process_request(self, request, spider):

# 随机从其中选择一个,并去除左右两边空格

proxy = random.choice(self.proxyList).strip()

# 打印结果出来观察

print("this is request ip:" + proxy)

# 设置request的proxy属性的内容为代理ip

request.meta['proxy'] = proxy

# Downloader Middleware的核心方法,只有实现了其中一个或多个方法才算自定义了一个Downloader Middleware def process_response(self, request, response, spider):

# 请求失败不等于200

if response.status != 200:

# 重新选择一个代理ip

proxy = random.choice(self.proxyList).strip()

print("this is response ip:" + proxy)

# 设置新的代理ip内容

request.mete['proxy'] = proxy

return request

return response

每个 Downloader Middleware 定义了一个或多个方法的类,核心的方法有如下三个:

1.process_request(request, spider)

2.process_response(request,response, spider)

3.process_exception(request, exception, spider)

找到 setting.py 文件中的这块区域:

#DDWNLQADER_MIDDLEWARES = {

# *images.middlewares.ImagesDownloaderMiddleware": 543,

# *images middlewares,LocalProxyMiddleware*: 100

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: