Python爬蟲實戰演練之采集拉鉤網招聘信息數據

本文要點:

  • 爬蟲的基本流程
  • requests模塊的使用
  • 保存csv
  • 可視化分析展示

環境介紹

  • 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 模塊名。

如果出現爆紅,可能是因為,網絡連接超時,切換國內鏡像源

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

  • 發送請求
  • 獲取數據
  • 解析數據
  • 保存數據

開始代碼

導入模塊

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基礎入門視頻教學

點這裡即可免費在線觀看

到此這篇關於Python爬蟲實戰演練之采集拉鉤網招聘信息數據的文章就介紹到這瞭,更多相關Python 采集拉鉤網招聘信息數據內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: