Python爬虫实战,requests+time模块,爬取某招聘网站数据并保存csv文件(附源码)

news2025/1/13 13:14:36

前言

今天给大家介绍的是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

结果展示

结果展示

最后

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

里面有适合小白新手的Python实战教程给到大家~

快来和小鱼一起成长进步吧!

① 100+多本PythonPDF(主流和经典的书籍应该都有了)

② Python标准库(最全中文版)

③ 爬虫项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ImmunoChemistry丨艾美捷抗体夹心ELISA开发试剂盒说明书

使用ImmunoChemistry艾美捷抗体夹心ELISA开发试剂盒评估检测可行性并优化ELISA性能参数。抗体夹心ELISA开发试剂盒提供了八种特殊配制的ELISA溶液和一个模板&#xff0c;用于抗体夹心ELISA测试的初始开发和优化。全面的ELISA开发手册提供了评估初始检测可行性和优化ELISA性能参…

关于 npm run buildprod 报错问题 :文件名、目录名或卷标语法不正确

引言 vue开发基本完成后进行打包时出现错误&#xff0c;这个错误以前没有遇到过&#xff0c;所以在这里激励 参考文章1 参考文章2 问题描述 在idea中运行npm run build:prod打包vue时出现报错 E:\Allworkspaces\idea-workspace\Project\vue-project\my-blog\vue-admin-te…

代码随想录第三天

专题&#xff1a;链表 题目&#xff1a;移除链表元素 题意&#xff1a;删除链表中等于给定值 val 的所有节点。 示例 &#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 解题思想&#xff1a; 我们为了统一操作&#xff0c;我们给链表…

身份证实名认证API接口有什么意义与作用?

身份证实名认证API接口有什么意义&#xff1f; 中国公民的身份证是一种对外证明自己身份的有效证件&#xff0c;随着国家对实名制要求的落实&#xff0c;工作与生活中许多场景都会需要进行身份验证。比如出门外出乘座火车与飞机时、注册互联网络平台时、网络游戏与购物时等等&a…

微信小程序怎么注册?【微信小程序制作】

即使在目前小程序盛行的时代&#xff0c;仍然有很多人在问微信小程序怎么注册、微信小程序怎么做的问题&#xff0c;也证明了我们对于微信小程序的需求依然巨大。那么微信小程序怎么注册呢&#xff1f;下面给大家简单介绍。 步骤1&#xff1a;注册小程序账号 我们在微信公众平…

启封化工行业管理方案—危化品的管理(1)

联合国危险品编码管理 什么是危化品&#xff1f; 危化品是指可能伤害人、其他生物体、财产或环境的固体、液体或气体。这些危险品在运输时始终受到规章制度的约束。运输这些危险品的团队是训练有素的专业人员。使用标签时&#xff0c;存储标签的容器或存储位置通常用菱形标牌标…

2022年疫情下的卡塔尔世界杯,你看了么,盘点一下爆冷的赛事

卡塔尔世界杯卡塔尔世界杯世界杯出现的爆冷比赛沙特阿拉伯 VS 阿根廷&#xff08;1:2&#xff09;德国 VS 日本 (1:2)比利时 VS 摩洛哥 (0:2)摩洛哥VS 加拿大 (2:1)日本 VS 西班牙 &#xff08;2:1&#xff09;摩洛哥 VS 西班牙(3:0)总结卡塔尔世界杯 卡塔尔世界杯有32个国家参…

数据结构与算法(Java版) | 几个经典的算法面试题(下)

上一讲&#xff0c;我给大家介绍了两个经典算法面试题&#xff0c;即字符串匹配问题和汉诺塔游戏&#xff0c;这一讲&#xff0c;我再来给大家介绍两个经典算法面试题&#xff0c;它们就是八皇后问题和马踏棋盘算法&#xff0c;注意&#xff0c;马踏棋盘算法也被称为骑士周游问…

springsecurity--Config层代码常用代码指令

前提搭建 使我们的类继承于WebSecurityConfigurerAdapter这个类 同时调用service还有新建一个bean方法 Bean public PasswordEncoder getPassword() {return new BCryptPasswordEncoder(); } 这个代码是可以自定义账户和密码 自定义登录账户和密码写在service类中 下方的红框…

SSM框架-SSM整合

目录 1 ContextLoaderListener 2 准备工作 3 配置web.xml 4 配置springmvc.xml 5 配置spring.xml 6 Spring整合MyBatis 7 配置log4j.xml 8 配置事务 9 测试功能 9.1 创建pojo类 9.2 员工列表功能 9.3 分页数据 9.4 分页相关超链接 1 ContextLoaderListener Spring提…

安卓玩机搞机技巧综合资源-----卸载内置软件 获取root权限 刷写第三方ROM【六】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

985、211毕业一年,面试八家大厂,四面拿美团offer(Java后端)

自我介绍 本人三年开发&#xff0c;985硕士&#xff0c;211本科&#xff0c;专业都是软件工程&#xff0c;一直投的是Java后台开发&#xff0c;只投过一次网易的测试&#xff0c;技术不是太牛&#xff0c;但是比较努力。实验室没有项目&#xff0c;so项目经验是0&#xff0c;在…

openssl自动批量生成证书

使用bash批处理程序自动生成证书信息。 1、在linux系统创建一个文件夹 $ mkdir my_cert 2、创建CA证书以及私钥 $ cd my_cert $ openssl genrsa -out CA_Private.key 2048 $ openssl req -x509 -new -nodes -key CA_Private.key -sha256 -days 365 -out CA_Certificate.p…

Node.js 动画:事件循环

我们都听说过 JavaScript 和 Node.js 是单线程的&#xff0c;但实际上这意味着什么&#xff1f; 这意味着 JavaScript 一次只能做一件事。例如&#xff0c;我们不能同时对数字进行乘法和求和。我们通常按顺序进行操作。我们先加然后乘&#xff0c;反之亦然。现代计算机速度很快…

常见的卷积神经网络模型,卷积神经网络数学建模

1、卷积神经网络cnn究竟是怎样一步一步工作的 用一个卷积核滑动图片来提取某种特征&#xff08;比如某个方向的边&#xff09;&#xff0c;然后激活函数用ReLU来压制梯度弥散。对得到的结果用另一个卷积核继续提取reLU&#xff0c;然后池化&#xff08;保留区域最大或者用区域…

【linux】centos7 普通用户授予 root 权限

目录前言sudo介绍sudo的使用前提 --- 配置文件/etc/sudoers结语前言 最近通知 linux 期末考试啦&#xff01;要上机实操并且要求不能使用 root 用户&#xff0c;因此有些操作需要涉及到权限问题&#xff0c;我们都知道在命令前加sudo就行了&#xff0c;但sudo的使用也是有前提…

Spring 创建和使用 · 存储 bean 对象 · 获取并使用 bean 对象 · 关于配置文件 id 的注意事项 · getBean 方法的更多用法

Spring 是一个包含了众多工具方法的 IoC 容器。 容器的最基本的功能&#xff1a;把对象存储到容器&#xff08;Spring&#xff09;中&#xff1b;从容器中将对象取出来。 在 Java 中对象也叫做 Bean&#xff0c;以后我们遇到对象就以 Bean 著称。 一、创建 Spring 项目1.1 创建…

吹爆,阿里专家手码“数据库优化速成小册”Github现已疯传

现在在很多设计、开发、测试人员的眼中会认为SQL优化只是DBA 的事情。他们不需要去关心。反映到具体工作中&#xff0c;他们缺乏相应的优化意识&#xff0c;只注重功能的实现而忽略了相应的执行成本。最终的结果往往就是代码质量不高&#xff0c;软件上线后问题多。 LZ当初就是…

现货黄金K线图的“温柔一刀”

学习现货黄金交易K线图如何看、如何分析的方法非常多&#xff0c;但是小编交易&#xff0c;徐学一到两种即可&#xff0c;学会小而精的分析方法&#xff0c;才是我们赚钱的秘诀。俗话说得好&#xff0c;一招鲜吃遍天&#xff0c;就是这个道理。如果技术太多&#xff0c;最后没办…

IOT云平台 simple(5)springboot netty实现modbus TCP Master

本系列教程包括&#xff1a; IOT云平台 simple&#xff08;0&#xff09;IOT云平台简介 IOT云平台 simple&#xff08;1&#xff09;netty入门 IOT云平台 simple&#xff08;2&#xff09;springboot入门 IOT云平台 simple&#xff08;3&#xff09;springboot netty实现TCP Se…