[Selenium+Pyecharts]爬取建筑设计师招聘信息,数据清洗并可视化

前言:
8个小时内完成爬虫,数据清洗并可视化。因为自己也是小白,做的时候时间还挺赶的。很多地方没有做到完美,比如一些数据清洗的步骤走了捷径。有不足的地方,欢迎大神们留言指教。

    selenium :3.141.0
    pyecharts:1.9.0

1.Selenium爬取信息

我个人是喜欢用selenium做爬虫的,可以享受web自动化的这个过程。因为要爬取的东西不是很多,如果要爬取很多内容的同学,还是老老实实用request的吧。

此次爬取的是51job前程无忧,这里的url可以替换成你想查询的该网站的任何职业或者岗位。

爬取几个我们需要的重要信息,包括:职位名称,发布日期,工资,学历要求,经验要求,工作地点等等等。

网速快的同学记得把睡眠时间调短一些,不然真的会爬很久。我自己大概爬了7.8分钟吧

from selenium import webdriver
import pandas as pd
import time


wd = webdriver.Chrome()
wd.get('https://search.51job.com/list/000000,000000,0000,00,9,99,%25E5%25BB%25BA%25E7%25AD%2591%25E8%25AE%25BE%25E8%25AE%25A1,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare=')
wd.implicitly_wait(10)

max_pages = 100

titles = []
times = []
wages = []
infos = []
company_names = []
company_infos = []
company_atrri = []
def get_data(titles,times,wages,infos,company_names,company_infos,company_atrri):
    #获取职位名称
    title0 = wd.find_elements_by_css_selector('.jname.at')
    for each_title in title0:
        titles.append(each_title.text)
    #获取发布时间
    time0 = wd.find_elements_by_css_selector('.time')
    for each_time in time0:
        times.append(each_time.text)
    #获取工资信息
    wage0 = wd.find_elements_by_css_selector('.sal')
    for each_wage in wage0:
        wages.append(each_wage.text)
    #获取更多职位信息
    info0 = wd.find_elements_by_css_selector('.d.at')
    for each_info in info0:
        infos.append(each_info.text)
    #获取公司信息
    company_name0 = wd.find_elements_by_css_selector('.cname.at')
    for each_c_name in company_name0:
        company_names.append(each_c_name.text)
    #获取更多公司信息
    company_info0 = wd.find_elements_by_css_selector('.dc.at')
    for each_c_info in company_info0:
        company_infos.append(each_c_info.text)
    #获取公司性质
    company_atrri0 = wd.find_elements_by_css_selector('.int.at')
    for each_c_attr in company_atrri0:
        company_atrri.append(each_c_attr.text)



for i in range(max_pages):
    print(f'正在爬取第{i}页')
    get_data(titles,times,wages,infos,company_names,company_infos,company_atrri)
    wd.find_element_by_css_selector('.next').click()
    time.sleep(5) # 网速快的同学,请在这里操作,过快的操作可能会被检验出IP异常

data = {
   
    
    '岗位名称': titles,
        '发布时间':times,
        '薪酬':wages,
        '更多职位信息':infos,
        '公司名称':company_names,
        '公司更多信息':company_infos,
        '公司性质':company_atrri
        }
df = pd.DataFrame(data)
df.to_csv('建筑岗位信息.csv')


wd.quit()

最后将爬取的5000条信息转存为CSV格式。
下面是部分结果展示:
在这里插入图片描述

2 . Pandas清洗数据

这里清洗数据的工作是比较乱的,因为对我来说时间太紧了。下次会发一个另外的爬虫悉尼房价的代码,想对来说清洗很多。

清洗数据的几个主要目的:

  1. 工资的单位是不统一的,有些是年,有些是月;有些是万,有些是千。(可以从上图中看到)。为此得统一单位。
  2. 工资是一个范围,这个范围不利于我们后续的可视化和分析。我这是用的split,用正则表达式也是可以的,把上限和下限取出来求一个平均值。
  3. 需要把经验要求,上班地点和学历要求提出来作为一个单独的特征进行分析。
  4. 嗷对!还有一个很重要的点,一共爬取了5000条信息,但其中只有2500条是建筑设计师,所以同学们在自己做其他岗

猜你喜欢

转载自blog.csdn.net/weixin_52589734/article/details/113523865