(詳細)python爬取網頁資訊並儲存為CSV檔案(後面完整程式碼!!!)

一隻菜海龜發表於2020-10-29

本次爬取的網頁是獵聘網內關於深圳的所有招聘資訊,一共400多個職位,並儲存為csv檔案儲存,好了,話不多說,開始進入講解。(對爬蟲感興趣的,可以參考此篇文章的做法去爬你想要的網站去吧!!!)

首先開啟目標網站:

https://www.liepin.com/zhaopin/?compkind=&dqs=050090&pubTime=&pageSize=40&salary=&compTag=&sortFlag=&compIds=&subIndustry=&jobKind=&industries=&compscale=&key=&siTag=1B2M2Y8AsgTpgAmY7PhCfg%7EfA9rXquZc5IkJpXC-Ycixw&d_sfrom=search_title&d_ckId=c16556e4cc914dee657cb1e26c5f809e&d_curPage=0&d_pageSize=40&d_headId=c16556e4cc914dee657cb1e26c5f809e0

頁面資訊如下(因為招聘資訊是動態,可能你的介面的職位會有所不同)

       

我們按F12進入開發者介面:

點選元素旁邊的類似滑鼠的按鈕,如下:

然後就可以在原網頁點選我們想要獲取的標籤,之後就會顯示該標籤對應的html程式碼

比如點選工作名稱:雙語解說員,然後右邊就會幫我們找到對應的原始碼。

接著我們分析上下程式碼,發現該所有職位的程式碼都在<li>..</li>之間

所有我們可以找到包含這些職位程式碼的上一個標籤,即

故程式碼可以寫成  all_job = html.find("ul", class_="sojob-list").find_all("li")

這樣我們就定位到這個工作列表下,下面所有操作都是從這裡面去查詢,我們用一個迴圈遍歷每個<li>下的子標籤

用find方法可以讓網頁解析器一直查詢,直到查到對應的標籤下停止,這裡我們可以定位到 <div class = "job-info">下

該標籤下就是我們要爬取的東西

爬取工作名實現:name = date.find("a", target="_blank").text.strip()

再開啟<p class="condition clearfix>標籤,爬取地區,薪水,對應的網站,學歷

因此

爬取地區實現:area = date.find("a", class_="area").text

爬取薪水實現:salary = date.find("span", class_="text-warning").text

爬取網站實現:url = date.find("a", class_="area")["href"]  

爬取學歷實現:edu = date.find("span", class_="edu").text

最後我們再用一個迴圈去讓網站的url發生變化,也就是網站最後面的數字就是該網頁的頁數,如下:

最後再通過兩行命令,將結果儲存為csv檔案即可

爬取結束!!

檢視結果:

附上完整程式碼:

import requests
import  bs4
import pandas as pd
result = {"jobname": [],   # 工作名
          "area": [],  # 地區
          "salary": [],  # 薪水
          "url": [],   # 網址
            "edu":[]  #學歷
          }
for i in range(11):
    url = "https://www.liepin.com/zhaopin/?compkind=&dqs=050090&pubTime=&pageSize=40&salary=&compTag=&sortFlag=&compIds=&subIndustry=&jobKind=&industries=&compscale=&key=&siTag=1B2M2Y8AsgTpgAmY7PhCfg%7EfA9rXquZc5IkJpXC-Ycixw&d_sfrom=search_title&d_ckId=c16556e4cc914dee657cb1e26c5f809e&d_curPage=0&d_pageSize=40&d_headId=c16556e4cc914dee657cb1e26c5f809e" + str(i)
    print(url)
    r = requests.get(url)
    html = bs4.BeautifulSoup(r.text, "html.parser")
    all_job = html.find("ul", class_="sojob-list").find_all("li")
    for date in all_job:
        name = date.find("a", target="_blank").text.strip()
        area = date.find("a", class_="area").text
        salary = date.find("span", class_="text-warning").text
        url = date.find("a", class_="area")["href"]
        edu = date.find("span", class_="edu").text
        result["jobname"].append(name)
        result["area"].append(area)
        result["salary"].append(salary)
        result["url"].append(url)
        result["edu"].append(edu)
    df = pd.DataFrame(result)
    df.to_csv("shenzhen_Zhaopin.csv", encoding="utf_8_sig")

相關文章