11. 某直聘爬虫实践

一、前言

python以简练的语法、加上丰富的库,使之成为编写爬虫的标准语言。

事实上其它语言都是可以写爬虫的,只不过python用的最普遍而已。

本文以爬取某某直聘网站的职位信息为示例,带大家完成一个爬虫程序的开发。

二、网站分析

首先进入该网站的官方:BOSS直聘 (zhipin.com)

注意,如果没有登录,那么你需要先进行登录,然后进入其首页,开始搜索:

image.png

然后就可以看到搜索的职位结果:

image.png

我们的目标就是自动爬取这些搜索到的结果保存到本地,方便我们后面分析数据。

首先按F12,打开控制台:

image.png

并点击网络标签页,选择Fetch/XHR

首先网络标签页的作用就是追踪当前网站的所有网络请求,而Fetch/XHR就是从服务器获取数据的请求类型。

如果你稍微懂一点前端开发,那么就会知道发送网络请求的浏览器api叫做fetch函数,而XHR则是另一种稍微复杂的发送网络请求的对象。

通过勾选它,就能直接过滤出来该网站所有向服务器发送的网络请求、从而可以追踪出该网站是如何从服务器获取数据的。

然后下一步,换一个关键字,点击搜索,让其向服务器发送请求获取查询数据:

image.png

然后你就能看到其向服务器发送了数个网络请求,通过观察其请求的名字,你也能很快锁定这个joblist.json的请求,翻译过来就是工作列表嘛。

然后点击它,你就能看到完整的路径、以及请求的方法:

image.png

除此之外你还需要一个叫做cookies的东西,它就是你登录后,网站给你的访问标识符,这也是cookies的主要作用。

image.png

以及后面爬虫所需要的浏览器标识符,让服务器认为我们是正常的浏览器访问:

image.png

如果你不确定该请求的结果就是搜索结果,那么你还可以点开预览,它就是服务器返回的结果:

image.png

三、爬虫代码

有了上面的分析结果,下面我们就可以开始写爬虫了。

首先你需要安装网络请求库:

pip install requests

然后根据前面的分析,我们需要发送GET请求:

resp = requests.get(
    "https://www.zhipin.com/wapi/zpgeek/search/joblist.json",
)

它要请求的链接就是前面看到的url那一长串,这里只截取了?号之前的路径,因为后面是get请求的参数。

然后我们就可以来填写它的参数:


params = {

    "scene": 1,

    "query": "rust",

    "city": "101010100",

    "experience": "",

    "payType": "",

    "partTime": "",

    "degree": "",

    "industry": "",

    "scale": "",

    "stage": "",

    "position": "",

    "jobType": "",

    "salary": "",

    "multiBusinessDistrict": "",
作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux