智联招聘数据爬取(基础篇)

优采云 发布时间: 2020-08-19 17:59

  智联招聘数据爬取(基础篇)

  在智联招聘数据爬取(踩坑篇)中给出一种采集智联招聘数据的方式,方法简单,但不够自动化,效率较低。在本篇文章中,将介绍一种自动化采集方法,提高数据采集的效率。本篇文章可以将智联招聘网站数据搜集过程中的复制粘贴步骤省去,在浏览网页的同时,自动下载对应的json文件,实现数据采集。

  工具介绍

  上篇文章中提及,想要爬取的数据隐藏于某个链接的response中,即所谓的数据包,所以须要一个“抓包工具”。

  常用的抓包工具包括fiddler和mitmproxy等,由于mitmproxy由python语言编撰,且支持自定义python脚本,所以作者选择使用mitmproxy对数据包进行抓取。

  mitmproxy才能进行爬虫的原理如下:

  

  mitmproxy相当于是一个蝶阀,从浏览器到服务器之间多了一层,所有的访问恳求就会首先传输到mitmproxy,再由mitmproxy传输到服务器;所有服务器返回的数据就会首先经过mitmproxy,再交由浏览器解析呈现。所以想要爬取的岗位信息必然会被mitmproxy记录,通过mitmproxy找到数据包,进而将数据包保存即可。

  基本操作

  mitmproxy安装

  如智联招聘数据爬取(入门篇)中介绍,建议安装anaconda,本文依托anaconda进行操作。作者系统环境如下:

  操作系统:Windows10 家庭中文版 64bit

Python:anaconda、Python3.7.7

  anaconda安装python包的形式是在Anaconda Prompt中安装,mitmproxy的安装代码如下:

  pip install mitmproxy

  测试是否安装成功,可在Anaconda Prompt中输入以下代码测试。使用mitmweb测试的诱因包括:1)mitmproxy的安装实际上安装mitmproxy、mitmweb和mitmdump;2)mitmproxy在Windows系统下不可用,mitmweb和mitmdump的区别是mitmweb提供web界面,mitmdump为沉静模式,无web界面。初学时建议使用mitmweb,方便查看。

  mitmweb --version

  安装成功则会看见如下显示内容

  Mitmproxy: 5.1.1

Python: 3.7.7

OpenSSL: OpenSSL 1.1.1g 21 Apr 2020

Platform: Windows-10-10.0.18362-SP0

  mitmproxy基本操作

  安装成功后,就来认识下mitmproxy。

  1)在Anaconda Prompt中打开mitmweb,可以看见以下启动页(设置谷歌浏览器为默认浏览器),同时可以在Anaconda Prompt见到早已启动*敏*感*词*,*敏*感*词*端口为8080。

  

  2)将1)中的启动页使用其他浏览器打开(作者使用的是“世界之窗”,复制粘贴网址即可),然后关掉谷歌浏览器(必须完全关掉),再在cmd中使用8080端口重新启动谷歌浏览器,并忽视证书错误(毕竟是*敏*感*词*,需要忽视证书错误)。(这一部分建议在爬虫前,新建一个谷歌浏览器的用户文件夹,优点一是防止对现有的谷歌浏览器设置形成干扰;优点二在下一篇介绍。所以启动代码建议使用代码二。新建谷歌浏览器的用户文件夹,只要在任一文件夹下新建空白的“AutomationProfile”文件夹即可)

  # 代码一

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors

# 代码二

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors --user-data-dir=D:\\360Downloads\\AutomationProfile

  3)在2)中启动谷歌浏览器后,输入智联急聘的网址(/?jl=530&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&kt=3)后可在世界之窗的*敏*感*词*窗口观察到各类传输的链接,寻找以/c/i/sou?_v= 开头的链接,可在其response中发觉想要爬取的数据。

  

  至此使用mitmproxy监控谷歌浏览器访问智联招聘网站已经完成,接下来使用mitmproxy自定义python脚本将对应数据包的数据下载。

  mitmproxy自定义脚本

  把浏览器与服务器之间的交互觉得是flow,想要爬取的数据在以/c/i/sou?_v=开头的链接中。在mitmproxy中,链接包括两部份:host和url,其中host是服务器网址(),url是对应的链接(/c/i/sou?_v=)。host+url即组成了完整链接,在这里,只须要使用url即可采集到相应数据。只要找到以/c/i/sou?_v=开头url,通过获取response中的内容,再将其写入到txt文件即可。代码如下:

  import mitmproxy.http

from mitmproxy import ctx

url_paths = '/c/i/sou?_v=' #筛选url的判断条件

class Jobinfo:

def response(self, flow: mitmproxy.http.HTTPFlow):

if flow.request.path.startswith(url_paths): #startwith,找到对应的url

text = flow.response.get_text() #获取url的response的内容

file_handle=open('0624.txt',mode='a') #打开txt

file_handle.write(text) #将获取的response内容写入到txt

file_handle.write('\n') #写入 换行符

file_handle.write('\n') #写入 换行符

file_handle.close() # 关闭txt

return

addons = [

Jobinfo()

] #mitmproxy使用自定义python脚本的方法

  mitmproxy使用python脚本,只须要在启动mitmweb时,使用-s 后添加对应的py文件即可。(具体可参考拓展阅读)

  自动化采集数据

  在了解mitmproxy的基本操作之后,这一部分实现数据的自动化复制粘贴。

  1)在Ananconda Prompt中启动mitmweb,并指定自定义的python脚本。代码如下,其中-s表示要加载前面代码, 'D:\\360Downloads\\addons0624.py'表示代码地址,addons0624.py内的代码即为自定义python脚本。

  mitmweb -s 'D:\\360Downloads\\addons0624.py'

  2)在cmd中使用下列代码启动谷歌浏览器

  "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors --user-data-dir=D:\\360Downloads\\AutomationProfile

  3)在谷歌浏览器中输入打算好的“北京市数据分析师”的网址/?jl=530&kw=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88&kt=3。伴随着在浏览器中翻页,对应页面的岗位数据即可写入到定义的txt文件中。

  4)在文件夹中找到定义的txt文件即可。

  

  如果不知道txt保存在哪,推荐下载everything搜索即可,非常便捷。

  至此,已经实现复制粘贴的自动化。

  

  总结

  在智联招聘数据爬取(踩坑篇)给出了一种自动采集数据的方式,在这篇文章,将复制粘贴json数据进行自动化。只须要以特定的方法启动谷歌浏览器,并访问相应的页面即可实现数据的采集,更加便捷。下一篇文章即为智联招聘数据爬虫的最终篇,在最终篇将自动化浏览器的访问过程,实现数据采集的完全自动化。敬请期盼。

  本文首发公众号“数据科学家进阶之路”,主要专注数据剖析所需的技能,通过相应的案例熟悉模型算法,通过实际的业务例子熟悉商业逻辑,通过读书积累分享思维方法。期待你们关注。

  拓展阅读:

  使用mitmproxy+python做拦截代理:

  /posts/usage-of-mitmproxy/

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线