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 最終程式碼
下面就是我們這個小爬蟲的最終程式碼:

