嗨嘍~大家好呀,這里是魔王吶
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、潢川網(wǎng)站維護(hù)、網(wǎng)站推廣。
現(xiàn)在,很多人不是在找工作的途中就是在找工作的路上(我的廢話文學(xué)????)
所以我今天來采集一下招聘網(wǎng)站,讓我們來看看找工作主要要學(xué)會(huì)什么?
win + R 輸入 cmd 點(diǎn)擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
在pycharm中點(diǎn)擊Terminal(終端) 輸入安裝命令
解答、教程可加Q:免費(fèi)獲取哦~
I. F12或者鼠標(biāo)右鍵點(diǎn)擊檢查 選擇network 刷新網(wǎng)頁
II. 通過關(guān)鍵字 搜索找相應(yīng)數(shù)據(jù)包
# 導(dǎo)入數(shù)據(jù)請求模塊 ---> 第三方模塊 需要 pip install requests 導(dǎo)入模塊沒有使用 灰色 import requests # 導(dǎo)入正則模塊---> 內(nèi)置模塊 不需要安裝 import re # 導(dǎo)入json---> 內(nèi)置模塊 不需要安裝 import json # 導(dǎo)入格式化輸出模塊---> 內(nèi)置模塊 不需要安裝 import pprint # 導(dǎo)入csv模塊 import csv # 導(dǎo)入時(shí)間模塊 import time # 導(dǎo)入隨機(jī)模塊 import random 源碼、解答、教程可加Q裙: # 創(chuàng)建文件 f= open('python招聘10頁.csv', mode='a', encoding='utf-8', newline='') csv_writer= csv.DictWriter(f, fieldnames=[ '職位', '公司名', '薪資', '城市', '經(jīng)驗(yàn)', '學(xué)歷', '公司類型', '公司規(guī)模', '公司領(lǐng)域', '福利待遇', '發(fā)布日期', '公司詳情頁', '職位詳情頁', ]) # 寫入表頭 csv_writer.writeheader() """ 1. 發(fā)送請求, 對于分析得到url地址發(fā)送請求 <模擬瀏覽器對于url發(fā)送請求> 模擬瀏覽器---> headers 在開發(fā)者工具里面headers下面的 requests headers里面 請求頭, 字典數(shù)據(jù)類型, 要構(gòu)建完整鍵值對200]> 說明對于url地址發(fā)送請求成功了, 但是不一定得到你想要的數(shù)據(jù) 被反爬, 狀態(tài)碼可能還是200, 但是返回?cái)?shù)據(jù)不是你想要的內(nèi)容 """ for page in range(1, 11): print(f'----------------正在采集第{page}頁數(shù)據(jù)內(nèi)容----------------') time.sleep(random.randint(1, 2)) # 確定url地址--> 可以直接復(fù)制 url= f'https://search.51job.com/list/0%252C0%252C0%252C0%252C0,000000,0000,00,9,99,python,2,{page}.html' # 模擬瀏覽器 headers 請求頭 偽裝 headers= { # User-Agent 用戶代理, 表示瀏覽器基本身份標(biāo)識 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 發(fā)送請求 使用什么請求方式, 取決于開發(fā)者工具里的內(nèi)容 response= requests.get(url=url, headers=headers) # 200]> 響應(yīng)對象 200 狀態(tài)碼 請求成功 print(response) # 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)---> 獲取文本數(shù)據(jù) print(response.text) """ 解析數(shù)據(jù) ---> 提取我們想要數(shù)據(jù)內(nèi)容 解析方法比較多: re css xpath json解析.... 如何選擇方法 根據(jù)返回?cái)?shù)據(jù)類型以及我想要數(shù)據(jù)內(nèi)容情況 re.findall() 調(diào)用re模塊里面findall方法 通過re模塊找到所有我們想要數(shù)據(jù)內(nèi)容---> 告訴它去哪里找, 找什么樣數(shù)據(jù) 正則匹配提取出來數(shù)據(jù), 返回列表---> """ # 提取招聘數(shù)據(jù) re.findall() 源碼、解答、教程可加Q裙: html_data= re.findall('window.__SEARCH_RESULT__ = (.*?)', response.text)[0] # 把字符串?dāng)?shù)據(jù)轉(zhuǎn)成json字典數(shù)據(jù) json_data= json.loads(html_data) # print 打印字典數(shù)據(jù), 一行展示 pprint.pprint 打印字典數(shù)據(jù)類型, 格式化展開的效果 print(json_data) pprint.pprint(json_data) # 字典取值---> 根據(jù)鍵值對取值 根據(jù)冒號左邊的內(nèi)容[鍵], 提取冒號右邊的內(nèi)容[值] # for循環(huán)遍歷 把列表里面數(shù)據(jù)一個(gè)一個(gè)提取出來 for index in json_data['engine_jds']: # 提取數(shù)據(jù), 用字典 保存內(nèi)容 學(xué)歷是敲門磚, 技術(shù)才是鐵飯碗.... 畢業(yè)出來3500 dit= { '職位': index['job_name'], '公司名': index['company_name'], '薪資': index['providesalary_text'], '城市': index['workarea_text'], '經(jīng)驗(yàn)': index['attribute_text'][1], '學(xué)歷': index['attribute_text'][-1], '公司類型': index['companytype_text'], '公司規(guī)模': index['companysize_text'], '公司領(lǐng)域': index['companyind_text'], '福利待遇': index['jobwelf'], '發(fā)布日期': index['issuedate'], '公司詳情頁': index['company_href'], '職位詳情頁': index['job_href'], } # 寫入數(shù)據(jù) csv_writer.writerow(dit) print(dit)