Python網路爬蟲實戰!抓取PTT電影版【Python練習Day9】

終於來到Python網路爬蟲的實戰,因為平常就很愛滑PTT,所以拿PTT來練習超親切。這次的練習使用第三方套件beautifulsoup解析HTML,跟著彭彭老師的影片照著打,過程很順利,也蠻有成就感的!

By.

min read

business code coding computer

pexels-photo-270360

終於來到Python網路爬蟲的實戰,因為平常就很愛滑PTT,所以拿PTT來練習超親切。這次練習使用第三方套件beautifulsoup解析HTML,跟著彭彭老師的影片照著打,過程很順利,也蠻有成就感的!

Day9(12/20):網路爬蟲(Web Crawler) 抓取PTT電影版
Day9(12/20):網路爬蟲(Web Crawler) 抓取PTT電影版

什麼是網路爬蟲

數位行銷領域常常聽到「網路爬蟲」這個名詞,像是收集網路輿情、社群媒體資料等等,到底「網路爬蟲是什麼」?

網路爬蟲是一種用來自動瀏覽網路的機器人,可以幫我們把特定網頁中大量的資訊抓取下來,在這個資料爆炸的時代,網路爬蟲可以取代人力,讓大量採集數據變得更有效率,讓行銷人員/數據分析人員可以專注在做後續的數據分析和解讀。

網路爬蟲關鍵心法

彭彭老師在爬蟲教學的兩支影片中,都特別講解了「網路爬蟲關鍵心法」,對於爬蟲工作來說,是在開工前非常重要的觀念。

【盡可能讓程式模仿一個普通的使用者的樣子。】

我們在撰寫程式時,要盡量去設想,一個普通的使用者(人類),會如何去閱讀這個”頁面”,取得哪些”資料”,再由程式(機器人),利用重複的方式,協助我們大量撈取。

Python網路爬蟲流程

Python 網路爬蟲基本流程,包含:連線到特定網址、抓取資料、解析資料。

1.觀察要抓的網頁(以PTT電影版為例)

PTT爬蟲_python

打開PTT電影版,按下F12,可以打開Chrome瀏覽器的開發者工
我們可以利用這個工具,來觀察目標網頁的HTML架構。

2.使用urllib對網站發出請求

1608886206786

載入內建的標準網路請求庫(urllib),對PTT電影版提出連線需求。
這邊必須使用user-agent模擬一般使用者。

*user-agent可以從Chrome開發者工具(DevTools)中的Network→Index.html→Request headers中獲得。

3.抓取頁面資料(HTML)

1608886874405

送出需求以後會得到整個網站資料,如果將這個頁面資料印出,
會得到完整頁面的完整HTML程式碼。

4.載入beautifulsoup模組解析HTML

由於我們不是要整個原始碼,而是需要網頁中的資料。
因此必須安裝beautifulsoup模組,幫助我們解析HTML。

5.擷取需要資料(此處抓取文章標題)

最後,把解析後的HTML資料擷取需要的部分,
使用.find_all去抓div標籤裡面,class=title的所有資料。
(對應第一步觀察網頁,才知道自己要擷取哪些)

使用迴圈印出結果

最後用迴圈印出需要的結果。

Python爬蟲實作:撈取電影版文章標題

import urllib.request as req
url="https://www.ptt.cc/bbs/movie/index.html"

#建立一個request物件,附加request headers資訊
request=req.Request(url,headers={
    "user-agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Mobile Safari/537.36"
}) 
#模擬一般使用者User-Agent

with req.urlopen(request) as response:
  data=response.read().decode("utf-8")
print(data)

import bs4
root=bs4.BeautifulSoup(data,"html.parser")
print(root.title.string) #抓頁面標題


root1=bs4.BeautifulSoup(data,"html.parser")
titles=root1.find_all("div",class_="title") #尋找class="title"的div標籤
for title in titles: #利用迴圈取出整個頁面文章標題
  if title.a!=None:
    print(title.a.string)

執行結果

Python網路爬蟲-電影版

Python爬蟲(HTML)Q&A

Beautifulsoup如何安裝

在Google Colab內,只要輸入pip install beautifulsoup4,
即可安裝完成。

Beautifulsoup是什麼?

Beautifulsoup是一個第三方的Python套件,用來解析HTML、XML等格式,是目前非常熱門的Python爬蟲必備套件。

本次練習檔與影片

練習檔網址:Day9(12/20):網路爬蟲(Web Crawler) 抓取PTT電影版
影片列表:Python 網路爬蟲 Web Crawler 基本教學
Python練習計畫-行銷人學Python的理由?【Python練習】

【Python新手練習】相關文章

【Python新手練習】系列文,是一個行銷人學習Python的筆記,希望可以藉由練習程式,訓練更強大的邏輯思考,如果你也對這塊有興趣,這些文章或許可以幫助到你!也歡迎一起交流。

行銷人的Python練習90計畫-為什麼要學Python?
Day0:Google Colab新手Python開發環境推薦
Day1:Python變數與資料型態
Day2:Python判斷式與迴圈(流程控制)
Day3:Python函式 定義、呼叫與回傳
Day4:載入Python模組與使用
Day5:Python檔案讀取和儲存
Day6:Python亂數與統計
Day7:Python API 開放資料串接,抓取台北市政府公開資料
Day8:Python實體物件建立與使用
Day9:Python爬蟲實戰!抓取PTT電影版

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *