1. 程式人生 > 其它 >【Python爬蟲】拉鉤網招聘資訊資料採集

【Python爬蟲】拉鉤網招聘資訊資料採集

本文要點:

  1. 爬蟲的基本流程
  2. requests模組的使用
  3. 儲存csv
  4. 視覺化分析展示

環境介紹

  • python 3.8
  • pycharm 2021專業版 啟用碼
  • Jupyter Notebook

pycharm 是編輯器 >> 用來寫程式碼的 (更方便寫程式碼, 寫程式碼更加舒適)
python 是直譯器 >>> 執行解釋python程式碼的

本次目標

爬蟲塊使用

內建模組:

  • import pprint >>> 格式化輸入模組
  • import csv >>> 儲存csv檔案
  • import re >>> re 正則表示式
  • import time >>> 時間模組

第三方模組:

  • import requests >>> 資料請求模組 pip install requests

win + R 輸入cmd,回車輸入安裝命令pip install 模組名。

如果出現爆紅,可能是因為,網路連線超時,切換國內映象源

對於本篇文章有疑問的同學可以加【資料白嫖、解答交流群:1039649593】

程式碼實現步驟: (爬蟲程式碼基本步驟)

  1. 傳送請求
  2. 獲取資料
  3. 解析資料
  4. 儲存資料

開始程式碼

匯入模組

import requests  #
資料請求模組 第三方模組 pip install requests import pprint # 格式化輸出模組 import csv # csv儲存資料 import time

傳送請求

url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'
# headers 請求頭 用來偽裝python程式碼, 防止被識別出是爬蟲程式, 然後被反爬
# user-agent: 瀏覽器的基本標識
headers = {
    'cookie': 'privacyPolicyPopup=false; user_trace_token=20211016201224-ba4d90f0-3db5-4647-a86e-411ee3d5bfef; __lg_stoken__=08639898fbdd53a7ebf88fa16e895b59a51e47738f45faef6a32b9a88d6537bf9459b2c6d956a636a99ff599c6a260f04514df42cb77f83065d55f48a2549e60381e8da811b8; JSESSIONID=ABAAAECAAEBABIIE72FFC38A79322951663B5C7AF10CD12; WEBTJ-ID=20211016201225-17c89047f4293-0d7a7cd583dc83-b7a1438-2073600-17c89047f43a90; sajssdk_2015_cross_new_user=1; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%2217c8904800d57b-04f17ed5193984-b7a1438-2073600-17c8904800e765%22%2C%22%24device_id%22%3A%2217c8904800d57b-04f17ed5193984-b7a1438-2073600-17c8904800e765%22%7D; PRE_UTM=; PRE_HOST=; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist%5Fpython%3FlabelWords%3D%26fromSearch%3Dtrue%26suginput%3D; LGSID=20211016201225-7b8aa578-74ab-4b09-885c-ebbe57a6029a; PRE_SITE=; LGUID=20211016201225-fda15dbb-7823-4a2d-9d80-258caf018f02; _ga=GA1.2.903785807.1634386346; _gat=1; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1634386346; _gid=GA1.2.701447082.1634386346; X_HTTP_TOKEN=ba154973a88f2f64153683436141effc1d544fa2ed; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1634386352; LGRID=20211016201232-8913a057-d37d-41c3-b094-a04cf36515a7; SEARCH_ID=ff32d1294b464305b4e0907f659ef2a7
', 'referer': 'https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput=', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36', } data = { 'first': 'false', 'pn': page, 'kd': 'python', 'sid': 'bf8ed05047294473875b2c8373df0357' } # response 自定義變數 可以自己定義 response = requests.post(url=url, data=data, headers=headers)

<Response [200]> 獲取伺服器給我們響應資料

解析資料

json資料最好解析 非常好解析, 就根據字典鍵值對取值

result = response.json()['content']['positionResult']['result']
# 迴圈遍歷  從 result 列表裡面 把元素一個一個提取出來
for index in result:
    # pprint.pprint(index)
    # href = index['positionId']
    href = f'https://www.lagou.com/jobs/{index["positionId"]}.html'
    dit = {
        '標題': index['positionName'],
        '地區': index['city'],
        '公司名字': index['companyFullName'],
        '薪資': index['salary'],
        '學歷': index['education'],
        '經驗': index['workYear'],
        '公司標籤': ','.join(index['companyLabelList']),
        '詳情頁': href,
    }
    # ''.join() 把列表轉成字串 '免費班車',
    csv_writer.writerow(dit)
    print(dit)

加翻頁

for page in range(1, 31):
    print(f'------------------------正在爬取第{page}頁-------------------------')
    time.sleep(1)

儲存資料

f = open('招聘資料.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '標題',
    '地區',
    '公司名字',
    '薪資',
    '學歷',
    '經驗',
    '公司標籤',
    '詳情頁',
])

csv_writer.writeheader() # 寫入表頭

執行程式碼,得到資料


【付費VIP完整版免費分享】只要看了就能學會的教程,80集Python基礎入門視訊教學