使用python采集前程无忧招聘网站数据

  • 导入必要的模块:您导入了自动化模块DrissionPage以及其他常见的模块如requestscsvpandaspyecharts等。
  • 创建CSV文件并设置字段名:您创建了名为前程无忧.csv的CSV文件,设置了字段名,并写入了表头。
  • 使用Selenium进行网页操作:您使用ChromiumPage类打开浏览器,访问了前程无忧招聘网站并模拟了下滑页面操作。
  • 提取网页数据:您循环采集每一页的工作数据,提取了职位、薪资、城市、区域、经验、学历、公司、领域和标签等信息,并将这些信息保存到字典中。
  • 将数据写入CSV文件:您利用csv.DictWriter将提取的数据写入CSV文件中。

 

"""
模块使用
    requests
    DrissionPage(自动化模块)
    csv
    pandas
    pyecharts

"""
# 导入自动化模块
from DrissionPage import ChromiumPage

import json
import csv
# 创建文件对象
f = open('前程无忧.csv',mode='w',encoding='utf-8',newline='')
# 字典方式写入
csv_write=csv.DictWriter(f,fieldnames=[
'职位',
'薪资',
'年薪',
'城市',
'区域',
'经验',
'学历',
'公司',
'领域',
'标签'
])
# 写入表头
csv_write.writeheader()
# 打开浏览器
driver = ChromiumPage()

# 访问网站
driver.get('https://we.51job.com/pc/search?jobArea=010000,020000&keyword=python%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88&searchType=2&sortType=0&metro=')

# 元素定位获取相关内容
'''
css:标签属性提取数据内容->查看数据标签位置
xpath:标签节点提取数据内容
'''
for page in range(1,51):
    print(f'正在采集第{page}页数据。')
    # 下滑页面
    driver.scroll.to_bottom()
    divs=driver.eles('css:.joblist-item')
    for div in divs:
        info=div.ele('css:.joblist-item-job').attr('sensorsdata')
        # 把json字符串数据,转换成json字典
        json_data=json.loads(info)
        '''通过字典键值对取值,提取数据内容'''
        jobTittle=json_data['jobTitle'] #职位
        jobSalary=json_data['jobSalary'].split('·')# 薪资
        jobArea=json_data['jobArea'].split('·') # 地区
        jobYear=json_data['jobYear'] # 经验
        jobDegree=json_data['jobDegree'] # 学历
        # 判断元素
        if len(jobSalary) == 2:
            money = jobSalary[0]
            money_year = jobSalary[1]
        else:
            money=jobSalary[0]
            money_year= '12薪'
        if len(jobArea) == 2:
            city = jobArea[0]
            Area = jobArea[1]
        else:
            city = jobArea[0]
            Area = '未知'
        cname=div.ele('css:.cname').attr('title') # 提取标签属性 公司
        cname_text = div.ele('css:.dc.text-cut').text # 提取标签文字 领域
        # 提取多个标签内容 ->返回列表
        tags=div.eles('css:.tag')
        # 提取标签里面内容 通过列表推导式 .join()
        tage_info=' '.join([i.text for i in tags])
        # 保存数据到字典中
        dit={
            '职位':jobTittle,
            '薪资':money,
            '年薪':money_year,
            '城市':city,
            '区域':Area,
            '经验':jobYear,
            '学历':jobDegree,
            '公司':cname,
            '领域':cname_text,
            '标签':tage_info,
        }
        # 写入数据
        csv_write.writerow(dit)
        print(dit)
    # 点击下一页
    # driver.ele('css:.btn-next').click()



  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值