本文截图及运行环境均在Win7上实现(没错,我有折腾回来了,MAC上面的兄弟就照葫芦画瓢吧~)数据库
scrapy版本为1.0.3数据结构
参考文献以及下载连接:scrapy
本篇教程参考代码打包下载分布式
scrapy官方手册ide
请按顺序阅读本教程函数
教程已经三个月没有更新了,缘由是老板接了一个中兴的大数据项目,我被拉过去负责这个项目了,有兴致回来再来一发Spark教程吧~,最近终于有时间接着稍微写一些了,我必定要将写博客这个活动坚持下去,不论断了多少次我都会续上的~,原本准备写一些分布式爬虫的内容,可是还在调试阶段,等搞完以后一块儿写出来,咩哈哈~测试
本篇内容主要是教各位怎么初期配置一下scrapy的代理,其实后续有不少很麻烦的事情(好比如何构建代理池、如何获取大量代理、如何测试代理可用性等)。有空我会慢慢写的~(我须要读者的支持啊~粉我一下吧,不粉的话推荐一下也行啊~你们都不容易是吧~)大数据
在scrapy中专门有一个模块Downloader Middleware
来实现scrapy爬虫中请求和相应的某些通用功能,好比咱们此次要用到的代理功能,就是经过其子模块HttpProxyMiddleware
来实现的,至于Downloader Middleware
的其余子模块,我之后有空会一一介绍的,如今你们只要知道这个模块的基本含义就好了。网站
首先咱们如今njupt
目录下面新建一个名称为middlewares.py
的文件,文件内容以下:编码
import base64 class ProxyMiddleware(object): def process_request(self, request, spider): request.meta['proxy'] = "http://IP地址:端口号" proxy_user_pass = "用户名:账号" encoded_user_pass = base64.encodestring(proxy_user_pass) request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
其中
process_request
这个方法是自带的,是在每一个请求以前都会自动执行一下,借此来修改参数
request.meta['proxy']
直接经过这个属性直接设置代理,填的是IP地址和端口号,如http://218.200.66.196:8080
,通常你搞来的代理都会有着两个东西,直接填上去就好~
若是你搞来的代理还须要帐号和密码的话,咱们就须要给proxy_user_pass
赋值,形如root:12345
。
为了让你的代理账号密码能良好运行,咱们还须要base64.encodestring
这个函数来帮一下忙,对你的代理账号密码进行编码。
最后将编码事后的函数赋值给http头中的Proxy-Authorization
参数便可。
注意:以上3~5步,若是代理没有账号密码的话就不要折腾了。
创建完毕以后文件目录结构以下:
|---- njupt | |---- njupt | |---- __init__.py | |---- items.py #用来存储爬下来的数据结构(字典形式) | |---- middlewares.py #用来配置代理 | |---- pipelines.py #用来对爬出来的item进行后续处理,如存入数据库等 | |---- settings.py #爬虫配置文件 | |---- spiders #此目录用来存放建立的新爬虫文件(爬虫主体) | |---- __init__.py | |---- scrapy.cfg #项目配置文件
代理文件建立完毕以后,须要修改配置文件settings.py
,并在添加以下内容:
DOWNLOADER_MIDDLEWARES = { 'njupt.middlewares.ProxyMiddleware': 100, }
嘛,就是添加一下大的配置模块Downloader Middleware
,外加配置一个子模块HttpProxyMiddleware
嘛~
其实这个配置代理重点之一就是测试环节了,我这里给各位提供一种测试思路直接请求查看自身IP以及区域的网站便可,如(http://ip.filefab.com/),根据其返回的结果(图2-1与图2-2所示)来判断是否成功。
图2-1 生成的文件
图2-2 代理的具体信息
具体测试代码可参考基本说明中的附件代码。我们下期见~