爬虫练习-爬取拉勾网招聘信息(2020.2.2)

前言:

应对AJAX动态加载,并应用表单的交互技术,爬取爬取拉勾网招聘信息,解析网页返回的json数据,并将爬取的数据存储于MongoDB数据库中。

本文为整理代码,梳理思路,验证代码有效性——2020.2.2


环境:
Python3(Anaconda3)
PyCharm
Chrome浏览器

主要模块: 后跟括号内的为在cmd窗口安装的指令
requests(pip install requests)
pymongo(pip install pymongo )
json
time

1.

爬取目标url:https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=
看看python的相关职位。
在这里插入图片描述

2.

在源代码中查看相关的信息,我们可以发现在网页源代码中没有找到任何岗位的信息,由此可以推断,该网页是异步加载(AJAX)的。
在这里插入图片描述

3.

打开开发者工具F12,选择Network选项,并点击XHR文件,刷新一下网页,依次查看各个文件返回的内容。
在这里插入图片描述
我们发现在第一个文件在中就返回了我们需要的信息,而且是json格式。

4.

解析json格式。由于该json格式比较复杂,所以我们先点击到Preview查看,如图。
在这里插入图片描述
那么在content —》positionResult- --》result 路径中,我们用python中的json库对其解析。
注意:这里得到的 results 是多组信息,后用循环对它进行分组拆分,详见完整代码。

html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)

# 将网页的Html文件加载为json文件
json_data = json.loads(html.text)
# 解析json文件,后跟中括号为解析的路径
results = json_data['content']['positionResult']['result']

5.

到上一步,我们就已经获取到了信息了,但是不满足于此,我们还要爬取更多页的信息,手动翻页,发现url没有变化,可判断翻页也是异步加载,同上,我们还是进行逆向工程,去XHR文件中找线索。
发现它是一个POST请求,页数是由pn参数控制。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.

发现返回的json数据中含有信息的总数,如图。
在这里插入图片描述
拉勾网每页有15条岗位信息,并默认只有30页,那么我们将返回的信息总数除以15看是否小于30,若小于,总页数取对应结果,不然总页数就等于30,代码如下。

# 定义获取页数的函数
def get_page(url, params):
    html = requests.post(url, data=params, headers=headers, cookies=get_cookie(), timeout=5)

    # 将网页的Html文件加载为json文件
    json_data = json.loads(html.text)
    # 解析json文件,后跟中括号为解析的路径
    total_Count = json_data['content'][
  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值