需求简介
拉勾网是一个互联网行业的一个招聘网站,上面有许多职位,于是乎,小编想提取指定职位的基本信息(职位名,薪水,工作经验,工作地点,教育背景),然后插入 MongoDB 数据库,再根据每一个职位对应的 url 提取职位描述,做成词云
拉勾网反爬
看似拉勾网结构简单,实际上拉勾网的反爬有点厉害!
2.解决以上问题后,又出现了了一个脑阔大的问 题,用一个 ip 在提取数据时,提取到一定数量 就把 ip 封了,不让你继续提取,然而重新运行 又可以提取,但又得从头开始;也可以手动修改 页数代码继续爬取,这太 low 了
此问题在 HtmlDownload 模块解决的
流程
注:有时候一运行会报编码错误,在提取过程中也会出现过,这个有可能是网站解析的时候出的问题,只需要重新运行直到可以了就行
1、SpiderMan模块:主逻辑模块获取拉勾网数据源使用的是 post 请求,有个 Form Data 表单要提交的,first 代表是不是第一页,是为 true,不是为 false,但不管是什么不影响爬取;pn 代表页数;kw 代表你输入的职位的名称
2、 HtmlDownload模块:上面说的反爬问题在这里解决,下载 HTML 页面的模块,分三个函数,随机获取请求头和代理的函数;用于 post 请求数据源的函数,要想获得数据源,必须带 cookie;用于 get 请求获得职位描述的函数;我都用上了代理,每请求一次就换代理,降低被反爬的概率,前提是所使用的的代理做够多!足够稳定!要不然可能就会出现,数据爬取到了,可到了提取职位描述的时候这些代理又被封了
3、 HtmlParser模块:解析数据提取数据的模块
4、DataOutput模块:数据输出处理模块,职位信息插入数据库,职位描述写入 txt
5、UrlManager模块:构造每一个职位所对应的 url
-END-