前言
今天给大家介绍的是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如何获取如图所示
结果展示
最后本篇介绍了主要使用 requests
模块来请求数据,使用起来也是非常简单感兴趣的可以自己尝试一下。
本篇源码已上传至公众号。
黑客Roman,公众号:Python工程狮。
👍🏻:觉得有收获请点个赞鼓励一下!
🌟:收藏文章,方便回看哦!
💬:评论交流,互相进步!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。