Request爬取拉勾网信息

本文介绍了如何在拉勾网上爬取Python职位信息,由于网站使用Ajax加载且存在robot协议,需要通过分析Network中的XHR响应,模仿普通用户修改Headers,并构造Form Data数据来成功获取信息。
摘要由CSDN通过智能技术生成

首先, 拉勾网是一个典型的难以爬取信息的网站。是因为此网站包含robot协议,获取爬取请求做限制。导致无法顺利爬虫。

另外,职位信息是Ajax文件加载进来的,单纯了通过源码获取不到信息。

下面就开始对网站进行分析:

1.随意搜索一个职位,比如我搜索Python,下面对应出来很多Python的职位信息。。

 比如:第一个Python的职位叫“Python开发工程师”,此时我们右键查看源码,搜索“Python开发工程师”,却不能找到这个信息

 

通过F12,在Network下筛选出XHR响应(可以筛选出Ajax请求响应)

 打开后发现response中有我们要找的数据(所以可以判断这个网页就是通过Ajax加载的)

 

 当我们这样编写代码的时候发现打印出来的信息很少很少,也就是一些信息获取不到

from urllib import request,parse

url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='

resp=request.urlopen(url)
print(resp.read())

所以,解决这个问题的办法就是修改headers来伪装普通用户访问网页

复制Request Headers中的内容:

 为了伪装的更像是普通用户,我们也把Headers中的“Referer”复制下来,放进我们自定义的Headers里面

 要想发送post请求,我们必须构造Form Data数据:这里我们可以直接将网页中的“Form Data”拿过来进行构造

 具体代码如下:

from urllib import request,parse

url = 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
#resp = request.urlopen(url)
#print(resp.read())
headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.27 Safari/537.36',
        'Referer':'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput='
        }
data={
      'first': 'true',
      'pn': 1,
      'kd': 'python'
      }
req=request.Request(url,headers=headers,
                    data=parse.urlencode(data).encode('utf-8'),method='POST')

resp=request.urlopen(req)
print(resp.read().decode('utf-8'))

推荐这篇文章:https://www.jianshu.com/p/d30ef6785337

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值