Scrapy抓取拉勾网招聘信息(二)

  • 2016-12-07
  • 1,258
  • 0

上一节把基本的思路理清楚了之后,接下来就开始代码的编写了。

其中要注意的也是爬虫编写中最头疼的问题,就是反爬措施,因为拉勾网对爬虫的反爬手段就是直接封IP,所以我们首先得自己维护一个代理IP池。

Scrapy基本架构

我们先来看下Scrapy的基本架构

我们需要在Spiders里面编写爬虫的核心代码,然后在Item、Pipeline分别写入相应的代码,最后重写HttpProxyMiddleware组件。

ip代理

网上有许多卖ip代理的,很贵,效果也不是特别理想,所以就自己撸了个抓取免费代理的包,代码在github上,具体用法在README中也有写。

好了,代理也有了,开始编写代码。
生成一个名为lagou_spider的项目:
scrapy startproject lagou_spider

Items.py

第一步先确定我们的数据结构,定义item

Spiders.py

导入所需要的包之后,定义一个类继承自Spider

从上面可以看出大致流程是先从数据库中取出职位关键字和城市名,再用itertools.product两两组合起来供start_requests函数调用。

start_requests函数组合好url后生成Requests对象,由parse函数进一步处理返回的Response对象。

需要注意的是,要实现翻页效果,我们使用了meta参数,可以实现参数传递,具体用法请看文档

到这儿,我们的Spiders核心代码完成。

Pipelines.py

Spiders返回的item需要保存到数据库,就需要通过定义管道功能来实现。

Middlewares.py

定义中间件,把代理功能放进去。

settings.py

这里需要注意的是放置中间件的顺序,为什么要给750?请看文档middleware,相信看完后印象一定会很深刻。

最后再编写一个启动脚本run_lagou_job_info.py

实现了实时记录爬取进度,随时停止并且可以从上次的进度继续工作。

启动爬虫

python run_lagou_job_info.py
大功告成!

总结

其实爬虫并不难,难的是怎么绕过网站的反爬策略,找准思路,其实很简单。

链接:https://www.ioiogoo.cn/2016/12/07/scrapy抓取拉勾网招聘信息(二)/
本站所有文章除特殊说明外均为原创,转载请注明出处!

评论

还没有任何评论,你来说两句吧