小白拉勾网职位爬取(图文详解)

本文详细介绍了如何使用Python爬虫从拉勾网获取职位信息。通过分析网页结构和请求过程,使用requests库进行POST请求,设置正确的Headers和Form Data,最终成功获取并解析Json数据,将结果存储为CSV文件。文章适合Python爬虫初学者参考。
摘要由CSDN通过智能技术生成

拉勾网职位爬取总结

0:前言

由于自己差不多算是一个小白,所以在此次爬取过程中遇到了很多困难,但最终都一一解决了,得到了一个还算可以的结果。

1:用到的包

  • form urllib import parse 用于UrlCode的编码
  • requests 请求页面并返回数据
  • time 暂停进程
  • pandas 解析数据并存储成csv格式的文件

2:解析网页

访问拉勾网随便选择一个职位进入,这里我们选择Java,查看网页源码可以发现,源码里面虽然有想要的职位信息,但如果分开提取过于麻烦,于是就想到这些大网站的信息一般是用Json传输的,便想能不能访问其Json数据并直接提取我们想要的信息。
右键点开检查,Json数据一般可以在XHR中看到,所以依次点Network,XHR
Lagou_01

这时会发现里面什么数据都没有,我们刷新一下网站

Lagou_02

会发现里面多出了三条数据,可是根据查找资料,我们需要的json数据并非在这里面,这时候我就不知道该怎么办了,理论上来说要找到positionAjax.json这条数据的,可是并没有,之后又查找的好多资料以后,才发现需要点击一下地区才可以加载出来,我们点北京试一试

Lagou_03

这时我们发现里面的多了一条positionAjax.json的数据,这正是我们需要的。点开这项,我们打开Headers,可以发现他的真实的url地址

Lagou_04
这个就是这条数据的地址,我们需要用post的方式去请求他。刚开始我想要直接访问他,看看里面的数据格式从而更好地提取数据,可是当我复制地址直接访问的时候,却出现了这样的错误。

Lagou_05

不知道要怎么办,后来发现是因为他有反爬虫的机制,所以并不能直接访问,而是需要有头部信息才可以。这些信息在Request Headers中有。后来经过我实验,其中的Referer是最重要的一条信息,他表明了你的访问是从哪个网址过来的,这是很重要的一种保护数据的方式。

Lagou_06

知道要怎么获取之后,我们通过Postman这个软件去请求这个网址,看看能不能获取到想要的数据。我们把网址输入进去,把请求方式改为Post,然后再Headers中添加相应的头部信息,点击Send进行请求。
Lagou_07

然后我们发现的确获取到了数据,这时我以为可以了,但是却发现和网站上的数据不是相对应的。查阅资料发现还需要将Form Data也作为参数传进去才可以,照做之后,便得到了真实的数据。

Lagou_08

实际上,在网页上点击Preview便可以看到相应的数据,但若想要爬取下来,就需要进行Headers和Form Data的修改来进行请求。如图,里面的数据和网页上的数据是相对应的。这样一来就成功的可以爬取到想要的数据了,接下来写相应的代码。

Lagou_09

3:编写代码

首先,需要一个函数来获取所有的Json数据,定义一个getInfo函数来获得所有的信息,利用parse包将中文编码为UrlCode然后作为参数添加到网址中。之后我们更改requests中的参数,更改params,headers以及data信息。

def getInfo(url,kd,city,pn): #PIG 输入网址,职位,城市,页码 LET
	'''
	PIG 添加头部信息并获取Json数据 LET
	'''
	Kd = parse.quote(kd) #PIG 将职位和城市信息编码为UrlCode格式
	City = parse.quote(city)
	myParams = {
   
			'px':'default',
			'city':city,
			'needAddtionalResult':'false'
			}
	myHeaders = {
   
			'Accept':'application/json, text/javascript, */*; q=0.01',
			'Connection':'keep-alive',
			'Host':'www.lagou.com',
			'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36',
			'Referer':'https://www.lagou.com/jobs/list_'+Kd+'?px=default&city='+City
			<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值