今天的內容是網路爬蟲的部分,以下附上網址:
https://www.youtube.com/watch?v=9Z9xKWfNo7k&list=PL-g0fdC5RMboYEyt6QS2iLb_1m7QcgfHk&index=20&t=1293s
抓取特定網址的資料
1.1 觀察想要抓取的網頁,取得網址
1.2 利用開發人員工具,觀察網路連線細節 (Request Headers)
1.3 建立 Request 物件,附加 Request Headers 設定。
解析 HTML 格式資料
2.1 認識 PIP 套件管理工具
2.2 利用 PIP 安裝第三方套件 BeautifulSoup
2.3 利用 BeautifulSoup 解析並取得資料
實務操作:抓取 PTT 電影版的文章標題
-抓取 PTT 電影版的網頁原始碼 (HTML)
import urllib.request as req
url="https://www.ptt.cc/bbs/movie/index.html"
with req.urlopen(url) as response:
data=response.read().decode("utf-8")
print(data)
因為不像是正常使用者,因此被拒絕連線
-到網頁點選 F12 之後選 Network,之後再重新整理,index.html -> Headers -> Request Headers
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 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36"
})
with req.urlopen(request) as response:
data=response.read().decode("utf-8")
print(data)
-解析原始碼,取得每篇文章的標題
-先安裝一下 beautifulsoup4,在 terminal 打上 pip install beautifulsoup4 即可
-若是有跳出 "You should consider upgrading..."的訊息,再打一次"python -m pip install --upgrade pip"進行更新即可
import bs4
root=bs4.Beautifulsoup(data,"html.parser")
titles=root.find_all("div", class_="title") # 尋找 class="title" 的 div 標籤
for title in titles:
if title.a !=None: # 如果標題包含 a 標籤 (沒有被刪除),顯示出來
print(title.a.string)
因為今天的內容是網路爬蟲,因此顯示出的內容會隨著時間改變,又因為python版本的不同也會讓爬蟲前置作業不盡相同,因此這次的內容我並沒有成功的解析標題,明天再重新研究和測試看看。