Python爬虫实战,requests+time模块,爬取某招聘网站数据并保存csv文件(附源码)
创始人
2024-04-20 15:56:47
0次

前言

今天给大家介绍的是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 = 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学习路线图(告别不入流的学习)

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...