在之前的博客《用python爬蟲製作圖片下載器(超有趣!)》中,小菌爲大家分享瞭如何製作一個快捷便利的圖片下載器。本次分享,小菌爲大家帶來的同樣是關於爬蟲程序方面的分享——獲取拉勾網在線搜索消息。話不多說,直接上代碼!
# -*- encoding: utf-8 -*-
"""
@File : 拉勾網在線搜索招聘信息(手動).py
@Time : 2019/10/27 14:27
@Author : 封茗囧菌
@Software: PyCharm
轉載請註明原作者
創作不易,僅供分享
"""
# 導入相應的包
import requests
import time
import json
from urllib.parse import quote
def get_page(url_start,url_parse,params,job):
# 創建一個session對象
s = requests.Session()
# 用session對象發出get請求,請求首頁獲取cookies
s.get(url_start, headers=headers, timeout=3)
# 獲取此處的cookie
cookie = s.cookies
# 獲取此次的文本
response = s.post(url_parse, data=params, headers=headers, cookies=cookie, timeout=3)
# 設置每次請求間隔5秒鐘
time.sleep(5)
# 獲取json格式的數據
json_data = json.loads(response.text)
# 從json數據中獲取到數據的總數
total_Count = json_data['content']['positionResult']['totalCount']
print("搜索結果一共有:"+str(total_Count)+"條")
'''
拉勾網每頁是15條數據,默認只有30頁的信息,如果抓取信息的總數/15>30,就取30頁
'''
if int(total_Count/15) < 30 :
page_number = int(total_Count/15)
else:
page_number = 30
# 根據頁數決定方法調用的次數
for pn in range(1, page_number + 1):
get_info(url_start, url_parse, pn, job)
print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
def get_info(url_start,url_parse,page_number,job):
print("正在爬取第"+str(page_number)+"頁數據")
data = {
'first': 'false',
'pn': page_number, # 頁數
'kd': job # 搜索的關鍵字
}
# 創建一個session對象
s = requests.Session()
# 用session對象發出get請求,請求首頁獲取cookies
s.get(url_start, headers=headers, timeout=3)
# 獲取此處的cookie
cookie = s.cookies
# 獲取此次的文本
response = s.post(url_parse, data=data, headers=headers, cookies=cookie, timeout=3)
# 設置爬蟲休眠5秒
time.sleep(5)
# 整理json格式
text = json.loads(response.text)
# 獲取信息列表
info = text['content']['positionResult']['result']
for i in info :
# 獲取公司id
print('公司id', i['companyId'])
# 獲取公司全名
print('公司全名', i['companyFullName'])
# 獲取位置
print('位置', i['city'])
# 獲取薪資
print('薪資', i['salary'])
# 獲取公司規模
print('公司所在人數', i['companySize'])
# 獲取要求技能
print('所需技能', i['skillLables'])
# 招聘信息發佈時間
print('信息發佈時間', i['createTime'])
# 區域
print('所在區域', i['district'])
# 要求學歷
print('要求學歷', i['education'])
# 車站名稱
print('車站名稱', i['stationname'])
print("===========================================================")
if __name__ == '__main__': # 主程序入口
job = input("歡迎來到拉勾網,請輸入您想諮詢的職位:")
# 想要在URL中拼湊中文,需要將中文內容進行【轉碼】,用16進製表示
job_transcode = quote(job)
print("job", job_transcode)
# 主url【要爬取數據頁面首頁】
url_start = "https://www.lagou.com/jobs/list_"+job_transcode+"/p-city_0?&cl=false&fromSearch=true&labelWords=&suginput="
# ajax請求
url_parse = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"
print(url_start)
params = {
'first': 'true',
'pn': '1',
'kd': job
}
# 加入請求頭,僞裝成瀏覽器
headers = {
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Referer': 'https://www.lagou.com/jobs/list_'+job_transcode+'/p-city_undefined?&cl=false&fromSearch=true&labelWords=&suginput=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}
get_page(url_start, url_parse, params, job)
效果圖
細心的小夥伴可能發現了,這次的爬蟲程序跟上次分享的圖片下載器完全不是一個級別的,怎麼那麼多處代碼看不懂 ̄へ ̄其實很正常啦,因爲爬蟲的下限很低,上限極高。(如果每個網站的數據都那麼好獲取,那讓該網站背後的程序員情何以堪)可能對於初學爬蟲不久的學者來說,理解該次爬蟲的過程比較的困難。但莫言先生曾經說過:
當你的才華還撐不起你的野心的時候,
你就應該靜下心來學習;
當你的能力還駕馭不了你的目標時,
就應該沉下心來,歷練。
流年笑擲 未來可期!本次的分享就到這裏,後續小菌還會推出更多有趣的爬蟲,喜歡的小夥伴不要忘了點贊關注小菌~