Python 之 爬虫实战 -- 采集招聘网站数据内容——拉勾网
采集招聘网站数据内容——拉勾网
安装配置详情看上一篇博客
https://www.ivanky.cn/应用记录/207.html
案例实战
(1)Python采集招聘网站数据内容——前程无忧
(2)运行环境
Python 3 、Pycharm、requests 。 其他内置模块(不需要安装 re json csv),安装 好 python环境就可以了。
(3)实现步骤
1. 发送请求, 模拟浏览器对于url地址发送请求
2. 获取数据, 获取服务器返回响应数据 开发者工具里面所看到 response 显示内容
3. 解析数据, 提取我们想要的数据内容 招聘岗位基本信息
4. 保存数据, 把数据信息保存表格里面
(4)源码
"""
# 导入数据请求模块
import requests
# 导入正则
import re
# 导入json
import json
# 导入格式化输出模块
from pprint import pprint
# 导入csv模块
import csv
# 导入时间模块
import time
# 创建文件
f = open('python多页.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
'职位名',
'公司名',
'城市',
'区域',
'薪资',
'经验',
'学历',
'公司规模',
'公司领域',
'详情页',
])
# 写入表头
csv_writer.writeheader()
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
- 需要请求工具 ---> requests
- 老师, 我英语不好, 可以学习编程吗? 可以学习python吗?
单词不需要死记硬背, python常用关键单词词汇 135+左右
python常用单词词汇文本
pycharm 翻译插件 ---> 自己去安装
- 模拟浏览器
爬虫模拟浏览器, 都是用请求头... headers
- 如果你是VIP学员, 远程安装 解答辅导 都是可以
"""
for page in range(1, 11):
try:
# 确定url地址
time.sleep(1)
url = f'https://www.lagou.com/wn/jobs?pn={page}&fromSearch=true&kd=python'
# 模拟浏览器
headers = {
# cookie 用户信息, 常用于检测是否登陆账号
# User-Agent 用户代理, 表示浏览器基本身份标识
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 发送请求 ---> <Response [200]> 响应对象 200 状态码 表示请求成功
response = requests.get(url=url, headers=headers)
# 2. 获取数据 print(response.text)
"""
3. 解析数据 ---> re正则表达式 会用 1 不会用 0
简单的使用re ----> 详细re教学 在系统课程教授2.5个小时左右...
re.findall('什据么数', 什么地方) re模块findall方法
从 什么地方 去找什么数据
说字典的同学, 说明你自学, 基础学的不怎么扎实...
"""
html_data = re.findall('<script id="__NEXT_DATA__" type="application/json">(.*?)</script', response.text)[0]
# 转成字典数据类型 自定变量命名规则, 蛇形命名 驼峰命名 Sad jsonData
json_data = json.loads(html_data)
# 字典取值---> 键值对取值 根据冒号左边的内容[键], 提取冒号右边的内容[值]
result = json_data['props']['pageProps']['initData']['content']['positionResult']['result']
# for遍历
for index in result:
# 详情页
link = f'https://www.lagou.com/wn/jobs/{index["positionId"]}.html'
dit = {
'职位名': index['positionName'],
'公司名': index['companyFullName'],
'城市': index['city'],
'区域': index['district'],
'薪资': index['salary'],
'经验': index['workYear'],
'学历': index['education'],
'公司规模': index['companySize'],
'公司领域': index['industryField'],
'详情页': link,
}
job_info = index['positionDetail']
job_info = re.sub('<.*?>', '', job_info)
name = index['positionName'] + index['companyFullName']
name = re.sub(r'[/\:"?*<>\n|]', '', name)
with open('data\\' + name + '.txt', mode='a', encoding='utf-8') as f:
f.write(job_info)
f.write('\n')
f.write(link)
# 写入数据
csv_writer.writerow(dit)
print(dit)
except Exception as e:
print(e)
(5)效果展示

END
原文公众号:Python顾木子吖

浙公网安备 33010602011771号