斷斷續續地在網路和書籍上學習有關 Python 的爬蟲技術,但隨著反爬蟲的技術也是越來越精進,所以想說藉由 「超新手也能用 Python 爬蟲打造貨比千家的比價網站」這門課來看看能否解決相關的疑惑。這篇承接上一篇,再爬一個靜態網站來練習。
課程相關資訊
[連結]:https://hiskio.com/courses/527/lectures/30362
本篇範圍:Chapter 2 ( 開啟第一個網頁爬蟲 – 自動化收集商品資料 )
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
筆記
1. 如果請求被擋下來,優先考慮加上 user-agent 於 header,看是否能解決問題
2. 可以依照情況選用 soup.select 或是 soup.find
程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// install pip and beautifulSoup4 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py pip install beautifulSoup4 import sys import codecs sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach()) import requests from bs4 import BeautifulSoup headers = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36' } rawRes = requests.get('https://www.momoshop.com.tw/goods/GoodsDetail.jsp?i_code=9027398&mdiv=1000700000-today-top1', headers = headers) resText = rawRes.text soup = BeautifulSoup(resText,'html.parser') productName = soup.find('div',class_='prdnoteArea').h3.text productPrice = float(soup.select('.prdPrice .special span')[0].text.replace(',','')) dicountOffer = soup.select('#promoThDesc')[0].span.text print(productName) print(productPrice) print(dicountOffer) |