前言

今天给大家介绍的是Python爬虫批量下载拉勾网招聘网站数据保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。

首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本数据爬取的人会很多,所以我们需要考虑更换代理IP和随机更换请求头的方式来对招聘网站数据进行爬取。

在每次进行爬虫代码的编写之前,我们的第一步也是最重要的一步就是分析我们的网页。

通过分析我们发现在爬取过程中速度比较慢,所以我们还可以通过禁用谷歌浏览器图片、JavaScript等方式提升爬虫爬取速度。

招聘

开发工具

Python版本: 3.8

相关模块:

requests模块

csv模块

time模块

代码

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

浏览器中打开我们要爬取的页面
按F12进入开发者工具,查看我们想要的拉勾网招聘网站数据在哪里
这里我们需要页面数据就可以了

源代码结构

代码实现

f = open('招聘数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '地区',
    '公司名字',
    '薪资',
    '学历',
    '经验',
    '公司标签',
    '详情页',
])

csv_writer.writeheader() # 写入表头
for page in range(1, 31):
    print(f'------------------------正在爬取第{page}页-------------------------')
    time.sleep(1)
    # 1. 发送请求
    #url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
    url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
    # headers 请求头 用来伪装python代码, 防止被识别出是爬虫程序, 然后被反爬
    # pycharm里面 先全部选中 按住 ctrl +R 用正则表达式命令 批量替换数据
    # cookie: 用户信息, 常用于检测是否有登陆账号
    # referer: 防盗链, 告诉服务器我们请求的url地址 是从哪里跳转过来的 (动态网页数据 数据包 要比较多)
    # user-agent: 浏览器的基本标识
    headers = {
        'cookie': '你的Cookie',
        'referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
    }
    data = {
        'first': 'false',
        'pn': page,
        'kd': 'python',
        'sid': 'bf8ed05047294473875b2c8373df0357'
    }
    # response 自定义变量 可以自己定义  <Response [200]> 获取服务器给我们响应数据
    response = requests.post(url=url, data=data, headers=headers)
    # 200 状态码标识请求成功
    # print(response.text) # 获取响应体的文本数据 字符串数据类型
    # print(type(response.text))
    # print(response.json()) # 获取响应体的json字典数据 字典数据类型
    # print(type(response.json()))
    #  2. 获取数据
    # print(response.json())
    # pprint.pprint(response.json())
    #  3. 解析数据 json数据最好解析 非常好解析, 就根据字典键值对取值
    # 根据冒号左边的内容, 提取冒号右边的内容
    result = response.json()['content']['positionResult']['result']
    # 列表数据类型, 但是这个列表里面的元素, 是字典数据类型
    # pprint.pprint(result)
    # 循环遍历  从 result 列表里面 把元素一个一个提取出来
    for index in result:
        # pprint.pprint(index)
        # href = index['positionId']
        href = f'https://www.lagou.com/jobs/{index["positionId"]}.html'
        dit = {
            '标题': index['positionName'],
            '地区': index['city'],
            '公司名字': index['companyFullName'],
            '薪资': index['salary'],
            '学历': index['education'],
            '经验': index['workYear'],
            '公司标签': ','.join(index['companyLabelList']),
            '详情页': href,
        }
        # ''.join() 把列表转成字符串 '免费班车',
        csv_writer.writerow(dit)
        print(dit)

Cookie如何获取如图所示

Cookie

结果展示

结果展示

最后本篇介绍了主要使用 requests 模块来请求数据,使用起来也是非常简单感兴趣的可以自己尝试一下。
本篇源码已上传至公众号。

黑客Roman,公众号:Python工程狮。
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!

图片


黑客Roman
404 声望39 粉丝

资料获取方式:Python零基础学习交流群:462668568,添加管理员即可获取