爬取拉勾网职位信息

本文介绍如何分析并爬取拉勾网上的Python岗位信息。首先,通过分析网站获取初始cookie,接着利用cookies发起请求获取职位数据。通过Chrome开发者工具定位到xhr请求,构造post请求获取json数据。然后解析数据并保存为csv和json格式。最后,讨论了如何实现自动翻页以爬取更多页面。
摘要由CSDN通过智能技术生成

分析拉勾网

拉勾网是具有一定反爬,它是通过cookie的识别来限制你的爬取。
首先分析网站,分析最开始的cookie。
搜索框中输入python
在这里插入图片描述
找到这条数据
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务器会通过最开始的 ‘set-cookie’ 生成一个cookie信息。
在这里插入图片描述
然后生生成这么一大串cookie,当然可以用这一串去请求,但是这不是我们的目的,而且可能爬取十条信息就被限制了。我们需要根据最开始的主站返回的cookie来请求后面的数据。
也就是请求"https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput="
获得cookie,在将获得cookie放入到我们要请求数据的cookie参数中。

获取cookie信息和参数等

首先定义一个方法 get_cookies() 获取最初的cookies
如果之前已经打开过拉勾网,则必须清除它的cookies。
在这里插入图片描述
可以通过chrome浏览器,隐私设置->网站设置->查看各网站的权限及储存的数据。将拉勾网重制权限,并清除数据。

def get_cookies(url):
    # 获取最新的cookie(由第一个网站生成)
    try:
        headers = {
   
            'origin': 'https://www.lagou.com',
            'referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',
            'authority': 'www.lagou.com',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
        }
        response = requests.get(url,headers=headers)
        if response.status_code == 200:
            return response.cookies.get_dict()
    except RequestException:
        return None

用get_dict() 返回一个字典形式的cookies
这个方法请求的url是
“https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=”

{
   'X_HTTP_TOKEN': '42daf4b72327b2818725861951bf5e71415983ed09', 'user_trace_token': '20200609144758-7080ec30-c3aa-4260-8a2d-98b123d1fc49', 'JSESSIONID': 'ABAAABAABAGABFAB1C2B1FB95E5F80712153A4764E599D8', 'SEARCH_ID': '8ab88b6deeeb4656ae5b18d5cc3e218d'}

在requests源码中是支持cookies参数接受一个字典

:param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`.

目前为止我们已经完成了cookies的获取,接下来就是构造post请求来获取我们要的数据了。

获取关于python的岗位

选择chrome开发者工具工具栏中的xhr选项
在这里插入图片描述
经过分析,发现这条是我们要的数据,通过这条辣来请求获取到页面的数据。
在这里插入图片描述
接下来构造post请求
在这里插入图片描述
定义一个方法 def post_one_page(url,cookies):
其中参数cookies是为了将上面获得cookies传入进去

def post_one_page(url,cookies,pn=1):
    # post方法请求网站数据
    try:
        headers = {
   
            'origin':'https://www.lagou.com',
            'referer
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值