scrapy中添加ip池的方法
我使用的是scrapy2.2
setting 中写下ip池
IPPOOL = [
{'ipaddr':'221.230.72.165:80'},
{'ipaddr':'175.154.50.162:8118'},
{'ipaddr':'111.155.116.212:8123'},
]
在在中间件midllewares添加代码
from mypython.settings import IPPOOL
from scrapy import signals
from scrapy.downloadermiddlewares.httpproxy import HttpProxyMiddleware
from itemadapter import is_item, ItemAdapter
import random
class Ip_proxy(HttpProxyMiddleware):
def __init__(self, ip=''):
self.ip = ip
def process_request(self, request, spider):
newip = random.choice(IPPOOL)
print('ip为:'+ newip["ipaddr"])
request.meta["proxy"] = "http://" + newip["ipaddr"]
random函数是随机获取ip池的ip
创建Ip_proxy类名字随意
在setting设置DOWNLOADER_MIDDLEWARES
类的名字没错就行
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':None,
'mypython.middlewares.Ip_proxy': 125,
}
mypython是创建scrapy的项目名(scrapy startproject mypython),大家根据自己的项目名修改。
setting 中写下ip池 IPPOOL=[]
也可以改为直接在中间件中间添加。
运行的结果
。。。
。。。
如果要写自动更新IP池 就要抓取ip,再导入中间件中,代理ip一般免费的都用不了,或者响应慢等一系列问题,一般都是买代理ip,一般都提供API接口。
Original: https://blog.csdn.net/weixin_49331403/article/details/118097965
Author: 求界
Title: scrapy中添加ip池的方法
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/789151/
转载文章受原作者版权保护。转载请注明原作者出处!