【Python爬蟲】招聘網站實戰合集第一彈:爬取前程無憂


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


在這里插入圖片描述

本次以前程無憂為例,看看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,思路都清楚的話,咱們來康康代碼。

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 = re.findall('window.__SEARCH_RESULT__ = (.*?)</script>', response.text, re.S)[0]
    # print(html_data)
    # print(type(html_data))
    # 把這個字符串數據類型 轉成 字典數據類型 通過鍵值對取值方式提取想要的內容
    json_data = 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)

 

注釋在手,世界都是你的,加油騷年!


在這里插入圖片描述
.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM