Python以終為始]Day 10–網路爬蟲
想研究機器學習的前端工程師,從零到一百學習python的筆記
Published in
Oct 9, 2022
爬蟲
- 連線到網站網址(一般、傳統網站)或api位址(ajax/xhr網站)
- 解析資料
- 關鍵:盡可能讓程式模仿一個普通使用者的樣子
解析資料模組使用
- json格式資料:使用json模組
- html格式資料:使用第三方套件BeautifulSoup(安裝
pip3 install beautifulsoup4
)
範例-取得ptt電影版的文章標題:
抓取網頁資料
連線至ptt電影版(直接連線網頁位址):
此時出現urllib.error.HTTPError: HTTP Error 403: Forbidden
的錯誤:
連線被拒絕(這個連線看起來不是一個正常的使用者)
必須建立一個request物件加上request header去讓連線看起來像是一個使用者:
然後就可以取得網頁資料(html):
解析html
取得網頁標題:
取得文章標題:
文章標題html結構:
<div class="title">
<a href="/bbs/movie/M.1665279460.A.94C.html">[心得]臥虎藏龍4K 修復. </a>
</div>
利用bs4套件幫助我們取得文章標題:
完成!
範例-取得ptt八卦版的文章標題:
與電影版差異:
進入八卦版前有一個判斷年齡的畫面,使用cookie存放已經點選過的紀錄。
request header部分新增一個已經完成判斷的cookie資料:
範例-取得使用ajax/xhr 技術網站的文章標題:
抓取網頁資料
連線至台北市資料大平台取得標題內容的api連結:
- 在request物件中,除了headers還需附上request data(又稱payload或request data)
- 利用
json.dumps()
將字典轉成字串,再加以編碼後送出
利用json.loads()
將字串轉為字典,再研究一下資料構造,即可取得標題: