正文:今天來爬一下boss直聘上關於python在全國的招聘崗位。
開發環境:
- python 3.7.9
- pycharm
用到的庫:
- pandas
- csv
- selenium
- pyecharts (做可視化的時候用到)
爬蟲以及保存csv文件的代碼:
""" 爬取boss直評數據 """ import pandas as pd import csv from selenium import webdriver f = open('boss直聘修復數據.csv', mode='a', encoding='utf-8-sig', newline='') csvWriter = csv.DictWriter(f, fieldnames=[ '標題', '地區', '薪資', '經驗', '學歷', '公司名', '公司領域', '福利', '是否上市', '公司規模', '詳情頁', '所在城市', '需具備技能', ]) csvWriter.writeheader() # 先在csv文檔中寫入頭 # 初始化瀏覽器 browser = webdriver.Chrome() # url = 'https://www.zhipin.com/c100010000/?query=python&page=8&ka=page-8' # 就爬一頁,可以循環爬取所有頁 browser.get(url) # 加載網頁 browser.implicitly_wait(10) # 全局等待10秒,等到網頁加載完成 def get_job_details(): lis = browser.find_elements_by_css_selector('.job-list li') # 找到招聘信息列表 for item in lis: #開始讀取信息 # 標題 title = item.find_element_by_css_selector('.job-name a').get_attribute('title') # 地區 area = item.find_element_by_css_selector('.job-area').text # 將地區處理為城市 chengshi = area[0:2] # 薪資 salaray = item.find_element_by_css_selector('.job-limit .red').text # 經驗 和學歷 expdata = item.find_element_by_css_selector('.job-limit p').text # 拆分expdata,將它拆分為經驗和學歷 jingyan = expdata[0:4] # 無論是經驗不限還是1-3年都是四個字符 xueli = expdata[-2:] # 取字符串的最后兩字 # 公司名 companyName = item.find_element_by_css_selector('.company-text .name a').text # 公司類型 companyStyle = item.find_element_by_css_selector('.company-text p a').text # 福利 descforworker = item.find_element_by_css_selector('.info-append .info-desc').text # 是否已經上市和公司人數 ipoeddata = item.find_element_by_css_selector('.company-text p').text # 這里的字符需要處理下 # isipoed = ipoeddata[0].text # companyWorkers = ipoeddata[1].text # 詳情頁 detailPage = 'https://www.zhipin.com/' + item.find_element_by_css_selector('.job-name a').get_attribute('href') suozaichengshi = chengshi # 所需技能 skillsneed = item.find_element_by_css_selector('.info-append .tags').text dit = { '標題':title, '地區':area, '薪資':salaray, '經驗':jingyan, #可能需要拆分 '學歷':xueli, '公司名':companyName, '公司領域':companyStyle, '福利':descforworker, '是否上市':ipoeddata, # 未處理數據 '公司規模':ipoeddata, # 未處理數據 '詳情頁':detailPage, '所在城市':area[0:2], '需具備技能':skillsneed, } print(dit) # 打印是否符合預期 get_job_details() # 運行下看是否符合預期 browser.close() # 關閉瀏覽器
保存后的數據如下:
可視化用pyecharts做,方向主要有:
- 每個城市招聘該職位數量的柱狀圖
- 求取下平均工資最高的城市
- 經驗學歷餅圖
- 上市公司占比餅圖
- 公司規模(人數)占比圖
- 公司行業分布圖
- 需要的技能餅圖