Python 之 爬虫实战 -- 采集招聘网站数据内容——前程无忧

采集招聘网站数据内容——前程无忧

安装配置详情看上一篇博客

https://www.ivanky.cn/Python/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
 
# 创建文件
f = open('data.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '职位',
    '公司',
    '城市',
    '经验',
    '学历',
    '薪资',
    '福利',
    '公司领域',
    '公司规模',
    '公司性质',
    '发布日期',
    '公司详情页',
    '职位详情页',
])
csv_writer.writeheader()
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
    - 需要模块
    
    - 模拟浏览器, 是用什么伪装模拟的
        请求头
    - 批量替换方法:
        1. 选择替换内容, ctrl +  R
        2. 点击 .*
        3. 输入正则命令 进行替换
            (.*?): (.*)
            '$1': '$2',
"""
# 确定请求url地址
url = 'https://search.51job.com/list/010000%252C020000%252C030200%252C040000%252C090200,000000,0000,00,9,99,python,2,1.html?u_atoken=0ebd3b84-8a7e-4598-8442-28333687bb0e&u_asession=01LE1DKlBRig-pCserJvEKtcD8FRdkDmxSC9vHIlu9RgicRu619dwho-tcQMpJEh-ZX0KNBwm7Lovlpxjd_P_q4JsKWYrT3W_NKPr8w6oU7K8losFOpWBCXw72NVjjGbeyUe3R9QHfzEvknA4dzJmVTGBkFo3NEHBv0PZUm6pbxQU&u_asig=0509LTGV1DvXMS_d8cXU0jv3xyAuxRHtUv_3iTMcaock6sXe4lMoRzoeNU0-4WRPy8d9VLjYwSYoqZRfrHRzYjSRtEXt_gJnMbngMyKwkcQvy_U3ZscBbWiqZINhCZ6eYI4iBYZ8_0uvXSgelx2P_AmiQIPqS5RvD76Ykjv1qCZTv9JS7q8ZD7Xtz2Ly-b0kmuyAKRFSVJkkdwVUnyHAIJzQlgrzuxIWQIo0fiMVZCpCacmYM5qL-ed1eR5R0F9DTnH_8T8uYGNepqxdb-gLe1IO3h9VXwMyh6PgyDIVSG1W_B5D3kdbrqcgu5uUHKicA6yeddtsgrM7GqljNTK8OvHqzgiKs0HrpHBlhQgs6dylHgSSI0vZrxvglZJr9CZiMwmWspDxyAEEo4kbsryBKb9Q&u_aref=T%2BGBzeflb1FpnfpkX4KDw6w05pw%3D'
# 伪装模拟 headers 字典数据类型
headers = {
    # 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',
}
# 发送请求
# 调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量名response接收返回数据
response = requests.get(url=url, headers=headers)
"""
2. 获取数据, 获取服务器返回响应数据
    开发者工具里面所看到 response 显示内容
    
3. 解析数据, 提取我们想要的数据内容
    招聘岗位基本信息
    response.text 获取响应文本数据 获取html数据
    
re 会 1 不会 0
- 调用re模块里面findall方法  找到所有我们想要数据
- re.findall('匹配什么数据<匹配规则>', '什么地方')
    - 从什么地方去匹配找寻什么样的数据内容
    - 从 response.text 去找寻 window.__SEARCH_RESULT__ = (.*?)</script> 其中 (.*?) 这段是我们要的数据
    - 正则表达式提取出来数据返回 ---> 列表数据类型
print(json_data)    打印字典数据, 显示一行
pprint(json_data)   打印字典数据, 显示多行, 展开效果
type() 内置函数, 查看数据类型
"""
html_data = re.findall('window.__SEARCH_RESULT__ = (.*?)</script>', response.text)[0]
# 转一下数据类型 转成字典数据类型
# 通过字典键值对取值, 提取我们想要的内容 根据冒号左边的内容[键], 提取冒号右边的内容[值]
json_data = json.loads(html_data)
# for循环遍历, 把列表里面的元素一个一个提取出来
for index in json_data['engine_jds']:
    dit = {
        '职位': index['job_name'],
        '公司': index['company_name'],
        '城市': index['workarea_text'],
        '经验': index['attribute_text'][1],
        '学历': index['attribute_text'][-1],
        '薪资': index['providesalary_text'],
        '福利': index['jobwelf'],
        '公司领域': index['companyind_text'],
        '公司规模': index['companysize_text'],
        '公司性质': index['companytype_text'],
        '发布日期': index['issuedate'],
        '公司详情页': index['company_href'],
        '职位详情页': index['job_href'],
    }
    csv_writer.writerow(dit)
    print(dit)

(5)效果展示
ldtxw8e1.png

END

原文公众号:Python顾木子吖

posted @ 2023-09-18 17:54  Ivan丶ky  阅读(438)  评论(0)    收藏  举报