1. 程式人生 > Python爬蟲入門教學 >08 最簡單的爬蟲案例開發

08 最簡單的爬蟲案例開發

前面的學習中我們已經簡單瞭解了一些爬蟲所需的知識,這節課我們就來做一個小爬蟲來實踐下我們前面所學習的知識,這節課我們會爬取網首頁所有的課程名稱:

1. 爬取網首頁所有課程名稱

我們第一個爬蟲程式,是來爬取網的首頁的所有課程資訊的名字。下面的程式碼鎖使用到的技術有的我們並沒有涉及到,後面的學習中我們會一一講解。這裡只是讓大家對爬蟲程式有個大概的瞭解,熟悉最基本的爬蟲流程,以及對爬蟲處理有一個粗略的印象,同時,也是激發大家學習的熱情,讓大家對爬蟲不僅停留在理論上,也可以實際操作去加深印象。

1.1 建立 imoocSpider.py 檔案

爬蟲檔案的命名一定要準確,爬蟲爬取的是哪一個網站就用哪一個網站來進行命名,這樣以後我們寫的爬蟲越來越多會方便管理。

檔案建立好之後首先匯入 requests 第三方庫和頁面解析工具 BeautifulSoup:

import requests   # requests庫,用來發送網路請求

from bs4 import BeautifulSoup   # 一個解析庫,用來解析網頁結構

Tips:BeautifulSoup 我們在後面會講到,這裡只是先用一下。

1.2 定義網址變數

定義網址變數 url,url 中儲存的是我們要爬取的網站,這個小爬蟲中我們要爬取的網站是:https://www.imooc.com

url = "https://www.imooc.com" #網首頁地址

1.3 建立請求頭部

建立請求頭部,因為伺服器會分辨請求的是瀏覽器或者是爬蟲,如果是爬蟲的話會直接斷開請求,導致請求失敗。為了不讓我們的爬蟲暴露,所以要給它加上一層偽裝,這樣伺服器就會認為是瀏覽器在請求了:

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36'} # 請求頭部

1.4 發起請求

使用 requests 庫中的 get 方法來進行請求:

r = requests.get(url,
headers= headers) # 傳送請求

1.5 解析請求結果

因為請求的結果是 HTML 格式的,所以我們使用 BeautifulSoup 來解析我們的請求結果:

bs = BeautifulSoup(r.text, "html.parser")   # 解析網頁

在返回的請求結果中,我們想要的資料都是在 h3 標籤中包裹著,所以我們使用 BeautifulSoup 查詢返回結果中所有的 h3 標籤並剝離,儲存在變數 mooc_classes 中。

mooc_classes = bs.find_all("h3", class_="course-card-name") # 定位課程資訊

1.6 解析資料

將每一個 h3 標籤中的課程名稱剝離,並存儲在 class_list 這個列表中去,最後將課程資訊存入到文字檔案中:

class_list = []

for i in range(len(mooc_classes)):
    title = mooc_classes[i].text.strip()
    class_list.append("課程名稱 : {} \n".format(title)) #格式化課程資訊

with open('mooc_classes.txt', "a+") as f: # 將課程資訊寫入文字檔案中
    for text in class_list:
        f.write(text)

1.7 最終程式碼

下面就是我們這個小爬蟲的最終程式碼:

案例演示 預覽 複製 複製成功!
import requests   # requests庫,用來發送網路請求

from bs4 import BeautifulSoup   # 這是一個解析庫,用來解析網頁

url = "https://www.imooc.com" #網首頁地址

headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36'} # 請求頭部

r = requests.get(url, headers= headers) # 傳送請求

bs = BeautifulSoup(r.text, "html.parser")   # 解析網頁

mooc_classes = bs.find_all("h3", class_="course-card-name") # 定位課程資訊

class_list = []

for i in range(len(mooc_classes)):
    title = mooc_classes[i].text.strip()
    class_list.append("課程名稱 : {} \n".format(title)) #格式化課程資訊

with open('mooc_classes.txt', "a+") as f: # 將課程資訊寫入文字檔案中
    for text in class_list:
        f.write(text)
執行案例 點選 "執行案例" 可檢視線上執行效果

上面的程式,就是一個最簡單的一個爬蟲程式。最後,我們格式化輸出的樣式,使得輸出格式為 課程名稱+網課程名稱的樣式,最後把結果儲存到一個 TXT 檔案裡面。最後我們開啟 TXT 檔案看一下效果:

如下圖所示:

圖片描述

Tips:一般在正式的爬蟲開發中我們不會把資料儲存到檔案中去,而是會儲存到資料庫中,這樣才能最大限度的保證資料不會丟失。

2. 小結

本小節,通過運用 BeautifulSoup 以及 Requests 實現了一個最簡單的爬蟲程式,關於它們的學習,我們會在後面的章節進行詳細論述。這個小程式,只是向大家演示一個最基本的爬蟲的工作流程。細心的同學肯定會發現,我們的程式碼量並不是很多,就輕鬆實現了一個簡單的爬取工作。其實,正式因為使用Python 編寫爬蟲程式的簡單方便,才使得 Python 語言成為了寫爬蟲程式的首選。