全站爬取拉勾网职位信息
一、环境
- window7
- scrapy
- MySQL
二、简介
scrapy的全站爬取方式crawlspider跟其通用爬取方式spider实现上有一定的区别,两者都有各自的优势,选择用哪种方式取决于你对数据的需求和网站形式。
数据维度:职位链接、链接MD5压缩、岗位 、最低工资、最高工资、工作城市、最低工作经验、最高工作经验、学历要求、职位类型、发布时间、公司标签、职位诱惑、职位描述、工作地点、公司名字、爬取时间、爬取更新时间
三、网页分析与编程实现
1、crawlspider项目创建
1)创建项目
在命令行中输入:scrapy startproject 项目名字
2)创建crawlspider模板
根据提示进入项目文件目录,输入:scrapy genspider -t crawl example example.com crawlspider模块如下图:
若需要另行创建环境,需要用到virtualenv模块,配置过程省略,在命令行中输入:mkvirtualenv virtualenv_name 创建新环境
当然如果需要指定python版本的环境,输入:mkvirtualenv --python=python2/3.exe 的路径
到这里crawlspider项目创建完毕
2、crawlspider爬取规则
其实crawlspider的爬取比通用的spider爬取更简便,从上图的模板可以看到,一个rules参数其实就是负责在全站的url中挖掘出有价值的url,也就是拥有我们想要的数据的url;其中的LinkExtractor方法是负责提取页面上的全部url,可根据我们设定的条件筛选出我们需要的url,callback参数是指定对筛选出的url的请求的响应函数,而follow参数的意思是是否需要对筛选出的url进行深度爬取,
所以一般的crawlspider程序只需要设置好rules和对url的解析函数就可以了,程序启动的入口是调用start_urls进行爬取;LinkExtractor方法中的allow参数值看起来并不完整,其实它是默认与allowed_domains连接起来的,如果一个网站的url并不是简单的https://www.xxx.com/....模式,我们可以挑选出多个含有有效信息的url模式写入allowed_domains列表中,如['www.xxx.com' , 'www.sss.com',...]
3、爬取拉勾遇到的问题
拉勾不需要登录也可以进行全站爬取,不过容易被服务器识别为爬虫,一旦被识别为爬虫访问,网站