Python專案(爬蟲) 趕集網招聘

2021-09-04 15:05:52 字數 4578 閱讀 7853

python——爬蟲的介紹

python——requests庫的學習

python——bs4(beautifulsoup)庫的學習

python——re庫(正規表示式)的學習

進入趕集網首頁,呼叫網頁搜尋,輸入查詢範圍

找到具體職位**

檢視源**,進行分析,查詢所需資料位置

學習爬蟲後試煉成果檢驗,時刻獲取趕集網當前最新招聘資訊,輸入你所需求的職位,幫你拿到第一手招聘資訊

#python專案

import requests #匯入requests模組——獲取網頁

import bs4

from bs4 import beautifulsoup #匯入bs4模組——解析網頁

import re #匯入re模組——在網頁資料中獲取需求資料

import csv #匯入csv模組——以csv檔案儲存資料

#獲取乙個網頁物件

def gethtmltext():

try:

#帶引數的get請求

keyword=input("請輸入求職職位:") #輸入需求的範圍

url=''+keyword #得到對應網頁位址

r = requests.get(url) #獲取respond物件

r.raise_for_status()

return r.text

except:

return""

def findhreflist(hlist,htext,html):

#建立檔案儲存資料

f = open('test.csv', mode='a+',encoding='utf-8',newline='')

writer = csv.writer(f)

writer.writerow(["職位","鏈結"])#在檔案中儲存資料

#建立乙個beautifulsoup解析物件

soup = beautifulsoup(html,"html.parser")

"""soup 表示被解析的html格式的內容

html.parser表示解析用的解析器

"""#在soup物件中尋找所有職位鏈結及職位名稱並儲存

for div in soup.find_all('div',attrs = ):

for a in div.find_all('a'):#利用迴圈查詢所有'a'標籤

if isinstance(a,bs4.element.tag):#判斷乙個物件是否是乙個已知的型別

a_href=a.get('href')

a_url=re.search(r'/(\w+)/(\d+)x\.htm',a_href,re.m|re.i)#利用正則獲取資料

if a_url:

writer.writerow((a.get_text(),a_url.group()))

f.close()

#尋找所有求職人數及求職方向

def findem(html):

#建立檔案儲存資料

f = open('test.csv', mode='w+',encoding='utf-8',newline='')

writer = csv.writer(f)

writer.writerow(["求職方向","方向人數"])

#解析物件

soup = beautifulsoup(html,"html.parser")

for a in soup.find_all('a'):

if isinstance(a,bs4.element.tag):

if (a.em!=none):

zp_direction=a.em.get_text()

searchzpd = re.search( r'(.*)\((\d+)\)', zp_direction, re.m|re.i)

if searchzpd:

direction=searchzpd.group(1)

quantity=searchzpd.group(2)

writer.writerow((direction,quantity)) #寫入表

f.close()

#顯示第一時間內爬取得到的職位

def printhtext(htext):

print("\t".format("序號","職位"))

for i in range(len(htext)):

u=htext[i]

print("\t".format(i,u))

#選擇所需職位的對應鏈結

def gethref(hlist,num):

try:

for i in range(len(hlist)):#遍歷所有連線,尋找所需鏈結

if i==num:

href=hlist[i]#得到所需鏈結

if href!=none:

url= ''+href#到完整鏈結

r = requests.get(url)#獲取respond物件

r.raise_for_status()

return r.text

except:

print("無職位資訊")

#所求職位的對應資訊

def findarticle(html_h):

try:

#建立檔案儲存資料

f = open('test01.csv', mode='w+',encoding='utf-8',newline='')

writer = csv.writer(f)

writer.writerow(["具體職位","工資","位址","職位描述"])

#解析物件

soup = beautifulsoup(html_h,"html.parser")

'''利用find_all(),使用標籤的屬性搜尋標籤,尋找 class=」title-line clearfix」的 div 標記

find_all() 方法將返回文件中符合條件的所有tag,需要遍歷尋找所需資料

'''for div in soup.find_all('div',attrs = ):

title=div.get_text().replace("\n","")

#print(title)

for div in soup.find_all('div',attrs = ):

salary=div.get_text().replace("\n","")

#print(salary)

for div in soup.find_all('div',attrs = ):

location=div.get_text().replace(" ", "")

location=location.replace("\n","")

location=re.sub(r'檢視地圖',"", location)

#print(location)

for div in soup.find_all('div',attrs = ):

description=div.get_text().strip()

#print(description)

writer.writerow((title,salary,location,description))

print("請到當前目錄下(test01.csv)檢視職位資訊")

except:

print("無職位資訊")

def main():

ulist= #鏈結

htext=#具體職位

html=gethtmltext()

findem(html)

findhreflist(ulist,htext,html)

printhtext(htext)

num=int(input("請選擇具體職位:"))#具體職位選擇

html_h=gethref(ulist,num)

findarticle(html_h)

main()

以上**在python3.7idle下執行如下圖所示

檢視test01.csv檔案

此次專案的實現過程中,遇見的難題:

這次爬蟲練習之路沒有什麼陷阱和阻礙,都是爬蟲學習的基礎知識,沒有遇見什麼不可實現的問題,不過正規表示式和樹結構這樣的基礎值得反覆加深印象

學習過程中的小知識:

爬蟲爬取趕集網租房資訊

如下 示例 import scrapy import numpy as np import pandas as pd import matplotlib.pyplot as plt 如下 示例 terminal 終端實現 cd 跳轉到上一層目錄 scrapy startproject booktop...

Python爬蟲初體驗之趕集網租房資訊獲取

初學python,剛接觸了beautifulsoup模組,就拿爬取趕集網租房資訊小試身手,以此彰顯python的威猛強大。一 環境配置 1 python 3.6.1 windows 10 64位系統 2.pycharm 編譯器 1 bs4 可通過在shell中pip install bs4 進行安裝...

趕集網緣何化身「趕驢網」

趕集網在2月初開始在央視 地鐵 滾動播出自己的廣告,這個廣告是由國內著名的策劃大師葉茂中做的策劃,廣告的大致情節是姚晨帶著一頭小毛驢去趕集,整個廣告片樂趣橫生並在觀眾心中留下了很深的印象。據悉趕集網還將在國內熱門的幾大衛視熱門節目中也投放廣告。然而就在此刻開始發生了乙個插曲,即在次廣告播出後有一些觀...