爬個妹子總是沒過,沒辦法,咱們來爬爬招聘網站吧~

本次以前程無憂為例,看看Python的工資如何,
這是今天的重點
1、爬蟲的基本流程 2、re正則運算式模塊的簡單使用 3、requests模塊的使用 4、保存csv
使用的軟體
python 3.8
pycharm 2021專業版
pycharm 社區版 (免費) 沒有主題
專業版 (需要激活碼)
使用的模塊
requests >>> pip install requests (資料請求模塊) 第三方模塊
re
json
csv
time
爬蟲最基本的思路
一. 資料來源分析
1. 確定我們要的爬取的內容是什么?
招聘基本資料資訊
2. 通過開發者工具進行抓包分析, 分析這些資料是從哪里可以獲得
開發者工具怎么打開 : F12 或者 滑鼠右鍵點擊檢查
二. 代碼實作步驟: 發送請求 >>> 獲取資料 >>> 決議資料 >>> 保存資料
1. 發送請求, 對于url地址發送請求
https://search.51job.com/list/010000%252C020000%252C030200%252C040000%252C090200,000000,0000,00,9,99,python,2,1.html
2. 獲取資料, 獲取服務器發給我們回傳的資料回應資料
3. 決議資料, 提取我們想要的資料內容 (比如 招聘標題, 招聘薪資…)
4. 保存資料, 保存到csv檔案
OK,思路都清楚的話,咱們來康康代碼,
【Python爬蟲】招聘網站實戰合集第一彈:爬取前程無憂,零基礎也能學會!
首先匯入模塊
不會安裝模塊以及安裝失敗看這篇教程:如何安裝python模塊, python模塊安裝失敗的原因以及解決辦法
import requests # 資料請求 第三方模塊 pip install requests import re # 正則運算式模塊 import json # 序列化與反序列化 import pprint # 格式化輸出模塊 import csv # 保存csv資料
算了,我直接貼代碼吧,流程都寫清楚了,我把注釋也標上了,
關于這篇文章,也有相對應的視頻教程:
f = open('python招聘資料1.csv', mode='a', encoding='utf-8', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '標題', '公司名字', '城市', '薪資', '招聘資訊', '公司屬性', '公司規模', '企業性質', '招聘發布日期', '公司詳情頁', '招聘詳情頁', ]) csv_writer.writeheader() # 寫入表頭資料 for page in range(1, 11): # 1. 發送請求, 對于url地址發送請求 url = f'https://search.51job.com/list/010000%252C020000%252C030200%252C040000%252C090200,000000,0000,00,9,99,python,2,{page}.html' # 把python代碼進行偽裝, 偽裝瀏覽器對服務器發送請求 # User-Agent 瀏覽器的基本資訊 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36' } response = requests.get(url=url, headers=headers) # 呼叫 requests這個模塊里面get方法對于 url發送請求 # 2. 獲取資料, 獲取服務器發給我們回傳的資料回應資料 # <Response [200]> <> 表示response回應物件 200 狀態碼 表示請求成功 # response.text 獲取回應體的文本資料(網頁源代碼) # print(response.text) # 3. 決議資料, 提取我們想要的資料內容 (比如 招聘標題, 招聘薪資...) # 決議方法: re正則運算式, css選擇器 xpath 根據服務器回傳的資料內容, 選擇最適合的決議方式 # 遇事不決 .*? 元字符 . 可以匹配任意字串除了換行符以外 * 匹配前一個字串 0個或者多個 ? 非貪婪匹配模式 # [] 表示串列 # {} 可能想到的是字典資料型別 # .*? 可以匹配任意字串 除了 換行符\n # 通過re模塊呼叫 findall 方法 'window.__SEARCH_RESULT__ = (.*?)</script>' 要匹配的資料內容 response.text從哪里匹配資料 [0] 串列索引取第一個元素 # 正則運算式詳細內容講解 在VIP課程里面 要講三個小時左右 html_data = https://www.cnblogs.com/hahaa/p/re.findall('window.__SEARCH_RESULT__ = (.*?)</script>', response.text, re.S)[0] # print(html_data) # print(type(html_data)) # 把這個字串資料型別 轉成 字典資料型別 通過鍵值對取值方式提取想要的內容 json_data =https://www.cnblogs.com/hahaa/p/ json.loads(html_data) # print(type(json_data)) # 字串的時候 里面的引號是雙引號 字典時候就變成了單引號 # print(json_data) # pprint.pprint(json_data['engine_jds']) # 字典取值 根據冒號左邊的內容, 提取冒號右邊的內容 # parsel 資料決議 for index in json_data['engine_jds']: # pprint.pprint(index) dit = { '標題': index['job_name'], '公司名字': index['company_name'], '城市': index['workarea_text'], '薪資': index['providesalary_text'], '招聘資訊': '|'.join(index['attribute_text']), '公司屬性': index['companyind_text'], '公司規模': index['companysize_text'], '企業性質': index['companytype_text'], '招聘發布日期': index['issuedate'], '公司詳情頁': index['company_href'], '招聘詳情頁': index['job_href'], } csv_writer.writerow(dit) print(dit)
注釋在手,世界都是你的,加油騷年!

.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/338912.html
標籤:Python
上一篇:Python例外
