現在要進入網路爬蟲的自學紀錄了!!!
Such a long way
網路爬蟲可以說是非常實用的功能
這篇文章會學習到
今天的自學資源是來自Coursera上台大資管系孔令傑老師開設的:
用 Python 做商管程式設計(三)(Programming for Business Computing in Python (3))
Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera
這堂課的內容是在第5週的C05網路爬蟲
老師上課的語速非常剛好
內容也很容易上手
非常推薦對python有興趣的人可以上去coursera上看老師的教學影片
對學習python的人來說會是很好上手並且內容豐富的一堂課
我們常見的網頁通常是長這樣
或是這樣
爬蟲就是去網頁上把資訊爬取下來
網頁上的這些資訊都是利用原始碼包裝過後所呈現出來的
以chrome為例
按右鍵就可以選取『檢視原始碼』,像是下圖紅色框框
網頁的原始碼如下圖所示
這些網頁的商品資訊經常會有變動
爬蟲可以定時擷取並且更新資料
像是商品種類或是價格
爬蟲也可以幫我們進行彙整與統計
像是要比較競爭者的商品價格
就可以利用爬蟲這個功能
最基本的爬蟲程式:
進階的網路爬蟲
針對多個網頁進行爬取
傳遞資訊給網頁(例如登入資訊)
操作網頁(例如點選下一頁)
像是要搶車票、演唱會的票,網頁通常需要登入、輸入資訊
一般的情況是需要我們手動輸入
但是有了爬蟲之後就可以預先設定好要輸入的內容、想要的座位
在需要和時間競賽的情況下
電腦會跑得比人快
使用爬蟲會替我們省下不少麻煩
HTML是一種程式語言
準確來說是一種標記語言
利用不同的標記產生美觀且具有互動性的網頁
雖然現在有不少網頁都不是用純HTML寫的,但是大多數都仍然遵循HTML架構
絕大多數的瀏覽器取得HTML檔案之後
會解析其中的標籤,並將解析後的網頁呈現出來
接下來來看簡單的網頁原始碼
HTML的排列大致上是樹狀的
有開頭跟結尾
上述範例有分成兩部分:
現在來看看Body裡的文字分別有何意思
<body bgcolor........>
:這行代表的是網頁的背景要選用什麼顏色<h3> Hi!!!</h3>
:表示的是header等級三,裡面包的是要用的文字<ul> ......<ul>
: 則是清單的意思<li> .....</li>
: 這裡的li是list item的意思buttom
:則會產生按鈕可以看出HTML語法有一定的排列規則
爬蟲主要是看我們想要的資訊儲存在某個標籤裡面
右上角紅色框框是在網頁上顯示出來的樣子
而下方的藍色框框則是他的原始碼
Python有非常多跟爬蟲相關的library
這裡會使用到的是
現在來練習取得網頁的HTML原始碼
假如現在想要取得博客來上跟python有關的書籍
首先使用requests.get()
取得網頁HTML的原始碼
import requests
url = "https://search.books.com.tw/search/query/cat/all/sort/9/v/0/page/1/spell/3/ms2/ms2_1/key/python"
r = requests.get(url) #r是requests.get()回傳的物件
print(r.ststus_code) #200代表ok
if r.status_code == requests.codes.ok:
print("OK!")
r是requests.get()回傳的物件
r.status_code 紀錄這個HTTP request的結果代碼
requests.codes.ok就是200
若是想查看原始碼,可以使用r.text
print(r.text)
可以看到輸出的是複雜的原始碼
代表已經把網頁的資訊擷取下來了!
接下來就可以使用beautifulsoup函式庫來協助我們解讀