現(xiàn)在剛畢業(yè),很多小伙伴因?yàn)檎也坏焦ぷ骰蛘哒伊撕芏嘁膊幌矚g,再有懶一點(diǎn)的,太熱了根本不想出門到處找。
所以今天給大家分享如何在家就能找到心儀工作
使用Python批量采集招聘數(shù)據(jù),進(jìn)行可視化分析,輕松找到心儀工作!
話不多說,我們直接開始~
準(zhǔn)備工作
軟件工具
- Python 3.8
- Pycharm
- 谷歌瀏覽器
- 谷歌驅(qū)動(dòng)
selenium --> 自動(dòng)化測(cè)試模塊
模擬人的行為去操作瀏覽器
手動(dòng)操作
- 打開瀏覽器
- 輸入網(wǎng)址
- 找到我們需要的數(shù)據(jù)內(nèi)容
- 手動(dòng)復(fù)制粘貼放到表格文件
模塊使用
selenium # pip install selenium==3.141.0 自動(dòng)化測(cè)試 操作瀏覽器 csv # 保存數(shù)據(jù) 保存csv文件
?
win + R 輸入cmd 輸入安裝命令 pip install 模塊名 (如果你覺得安裝速度比較慢, 你可以切換國(guó)內(nèi)鏡像源)
數(shù)據(jù)獲取部分代碼
打開瀏覽器
瀏覽器驅(qū)動(dòng)選擇以及下載:
- 查看瀏覽器版本
- 驅(qū)動(dòng)版本選擇和你瀏覽器版本最相近的
- 驅(qū)動(dòng)文件<不需要雙擊安裝>, 直接放到你python安裝目錄里面
主要代碼
driver = webdriver.Chrome() # 訪問網(wǎng)站 # 完整代碼+視頻講解+軟件工具領(lǐng)取 # 直接加這個(gè)摳裙:592539176 driver.get( 'https://www.liepin.com/zhaopin/?inputFrom=www_index&workYearCode=0&key=python&scene=input&ckId=rn8762mqhk78fi3d9fiqzzoobk7f66u9&dq=') """ 找到我們需要的數(shù)據(jù)內(nèi)容 前提 -> 你要讓網(wǎng)頁(yè)元素<數(shù)據(jù)>加載出來 通過元素定位, 獲取數(shù)據(jù)內(nèi)容 <通過標(biāo)簽提取數(shù)據(jù)> """ # 設(shè)置延時(shí), 讓網(wǎng)頁(yè)元素加載完整 driver.implicitly_wait(10) # 隱式等待, 只要網(wǎng)頁(yè)加載出來就運(yùn)行下面的代碼 time.sleep(1) # 死等, 一定要等夠 # 獲取所有招聘信息對(duì)應(yīng)div標(biāo)簽 divs = driver.find_elements_by_css_selector('.job-list-box div .job-card-left-box') # print(driver) # webdriver.Chrome() 返回selenium對(duì)象 # print(divs) # 返回列表, 列表里面元素是selenium對(duì)象 for div in divs: """ 提取具體數(shù)據(jù)內(nèi)容, 提取每個(gè)div標(biāo)簽里面所包含的數(shù)據(jù)內(nèi)容 .job-title-box div.ellipsis-1 """ # 職位 title = div.find_element_by_css_selector('.job-title-box div.ellipsis-1').text # 城市 city = div.find_element_by_css_selector('.job-title-box span.ellipsis-1').text salary = div.find_element_by_css_selector('.job-salary').text # 列表推導(dǎo)式 info_list = [i.text for i in div.find_elements_by_css_selector('.job-labels-box .labels-tag')] print(info_list) exp = info_list[0] edu = info_list[1] labels = ','.join(info_list[2:]) company = div.find_element_by_css_selector('.company-name').text company_type = div.find_element_by_css_selector('.company-tags-box span').text company_num = div.find_element_by_css_selector('.company-tags-box span:last-of-type').text href = div.find_element_by_css_selector('.job-detail-box a').get_attribute('href') dit = { '職位': title, '城市': city, '薪資': salary, '經(jīng)驗(yàn)': exp, '學(xué)歷': edu, '技術(shù)點(diǎn)': labels, '公司': company, '公司領(lǐng)域': company_type, '公司規(guī)模': company_num, '詳情頁(yè)': href, } csv_writer.writerow(dit) print(dit)
?
保存表格
f = open('python.csv', mode='w', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '職位', '城市', '薪資', '經(jīng)驗(yàn)', '學(xué)歷', '技術(shù)點(diǎn)', '公司', '公司領(lǐng)域', '公司規(guī)模', '詳情頁(yè)', ]) csv_writer.writeheader()
?
可視化展示
讀取文件
import pandas as pd df = pd.read_csv('data.csv') df.head()
?
python職位學(xué)歷需求分布
from pyecharts import options as opts from pyecharts.charts import Pie from pyecharts.globals import CurrentConfig, NotebookType CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB c = ( Pie() .add( "", [ list(z) for z in zip( edu_type, edu_num, ) ], center=["40%", "50%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="python職位學(xué)歷需求分布"), legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}")) ) c.load_javascript()
?
python職位學(xué)歷需求分布
edu_num = df['經(jīng)驗(yàn)'].value_counts().to_list() edu_type = df['經(jīng)驗(yàn)'].value_counts().index.to_list() c = ( Pie() .add( "", [ list(z) for z in zip( edu_type, edu_num, ) ], center=["40%", "50%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="python職位經(jīng)驗(yàn)需求分布"), legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}")) ) c.render_notebook()
?
python職位城市分布
edu_num = df['城市'].str[:2].value_counts().to_list() edu_type = df['城市'].str[:2].value_counts().index.to_list() c = ( Pie() .add( "", [ list(z) for z in zip( edu_type, edu_num, ) ], center=["40%", "50%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="python職位城市分布"), legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}")) ) c.render_notebook()
?
python公司領(lǐng)域分布
edu_num = df['公司領(lǐng)域'].value_counts().to_list() edu_type = df['公司領(lǐng)域'].value_counts().index.to_list() c = ( Pie() .add( "", [ list(z) for z in zip( edu_type, edu_num, ) ], center=["40%", "50%"], ) .set_global_opts( title_opts=opts.TitleOpts(title="python公司領(lǐng)域分布"), legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"), ) .set_series_opts(label_opts=opts.LabelOpts(formatter=": {c}")) ) c.render_notebook()
?文章來源:http://www.zghlxwxcb.cn/news/detail-582900.html
好了今天的分享就到這結(jié)束了,咱們下次再見!文章來源地址http://www.zghlxwxcb.cn/news/detail-582900.html
到了這里,關(guān)于簡(jiǎn)單的用Python采集獵聘招聘數(shù)據(jù)內(nèi)容,并做可視化分析!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!