在電商領域中,不論是賣家或買家,很多時候都會需要蒐集各個電商網站的商品、價格與評論等資料,來分析各種商品的價格、用戶滿意度,這時候就可以使用Python網頁爬蟲來自動化蒐集電商網站的資料,進而提升資料分析的效率。今天這篇文章就以MOMO購物網作為網路爬蟲應用實例,學會如何利用Python網頁爬蟲蒐集電商網站的資料。
- 網站分析及爬取策略
- Selenium發送請求
- Selenium爬取網頁資料
一、網站分析及爬取策略
首先,前往MOMO購物網,如下圖:
截取自MOMO購物網
假設我們想要利用Python網頁爬蟲蒐集「藍芽耳機」商品的資料,所以在搜尋的地方輸入關鍵字後,得到如下圖的畫面:
截取自MOMO購物網
接下來,當我們試著使用Python的requests套件發送請求到網站,在回傳的網頁原始碼中,搜尋網頁中的任一個商品名稱,可以看到資料位於網頁原始碼的JavaScript區塊中,如下範例:
換句話說,我們沒辦法輕鬆的使用像是BeautifulSoup的Python網頁爬蟲工具來取得其中的資料,因為網頁資料沒有在HTML標籤中,所以我們就可以使用Selenium套件來實作動態網頁爬蟲,爬取電商網站上的商品資料。
如果想要瞭解更詳細的Python網頁爬蟲爬取策略,可以參加我的免費線上培訓,教你各種網頁的爬取方法,讓你能夠輕鬆判斷網頁類型,爬取到想要的資料。
二、Selenium發送請求
開啟Python網頁爬蟲專案,引用Selenium所需要的模組,如下範例:
from selenium import webdriver #瀏覽器驅動模組 from webdriver_manager.chrome import ChromeDriverManager #Chrome瀏覽器驅動模組 from selenium.webdriver.common.by import By #網頁元素定位模組 import time #時間模組
更多Selenium專案的初始化與模組引用時機介紹,可以參考我的全面掌握Selenium建置動態網頁爬蟲的步驟與重要模組文章。
完成Selenium套件模組的引用之後,就可以建立瀏覽器驅動物件來發送請求,如下範例:
from selenium import webdriver # 瀏覽器驅動模組 from webdriver_manager.chrome import ChromeDriverManager # Chrome瀏覽器驅動模組 from selenium.webdriver.common.by import By # 網頁元素定位模組 import time # 時間模組 driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get('https://www.momoshop.com.tw/search/searchShop.jsp?keyword=藍芽耳機&_isFuzzy=0&searchType=1')
如果之後想要動態傳入網址的keyword參數值,可以使用Python的字串格式化(String formatting)來達成,如下範例第7、10行:
from selenium import webdriver # 瀏覽器驅動模組 from webdriver_manager.chrome import ChromeDriverManager # Chrome瀏覽器驅動模組 from selenium.webdriver.common.by import By # 網頁元素定位模組 import time # 時間模組 keyword = "藍芽耳機" driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(f'https://www.momoshop.com.tw/search/searchShop.jsp?keyword={keyword}&_isFuzzy=0&searchType=1')
三、Selenium爬取網頁資料
回到MOMO購物網,在商品名稱的地方點擊滑鼠右鍵,選擇「檢查」,可以看到它的網頁原始碼如下:
接下來,就可以利用Selenium套件的find_elements()方法,透過CSS_SELECTOR的方式,定位網頁上所有的商品名稱元素,如下範例:
from selenium import webdriver # 瀏覽器驅動模組 from webdriver_manager.chrome import ChromeDriverManager # Chrome瀏覽器驅動模組 from selenium.webdriver.common.by import By # 網頁元素定位模組 import time # 時間模組 keyword = "藍芽耳機" driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(f'https://www.momoshop.com.tw/search/searchShop.jsp?keyword={keyword}&_isFuzzy=0&searchType=1') titles = driver.find_elements(By.CSS_SELECTOR, "h3[class='prdName']")
最後,利用Python的For迴圈,讀取Python網頁爬蟲爬到的網頁元素,並且呼叫Selenium套件的text屬性,爬取網頁文字資料,如下範例第14~15行:
from selenium import webdriver # 瀏覽器驅動模組 from webdriver_manager.chrome import ChromeDriverManager # Chrome瀏覽器驅動模組 from selenium.webdriver.common.by import By # 網頁元素定位模組 import time # 時間模組 keyword = "藍芽耳機" driver = webdriver.Chrome(ChromeDriverManager().install()) driver.get(f'https://www.momoshop.com.tw/search/searchShop.jsp?keyword={keyword}&_isFuzzy=0&searchType=1') titles = driver.find_elements(By.CSS_SELECTOR, "h3[class='prdName']") for title in titles: print(title.text)
執行結果
四、小結
在這個資訊爆炸的時代,資料充滿在我們的日常生活之中,而要能夠有效蒐集、掌握資料,Python網頁爬蟲就是最常使用的方法,這篇文章分享了電商領域的應用實例,對於賣家來說,可以有效分析商品評論資料,擬定後續的行銷策略,而對買家來說,除了可以比較各個電商網站的價格之外,也可以即時取得商品的詳細資訊。
歡迎分享給身邊學習Python網頁爬蟲的朋友,也可以在本文下方訂閱本站,讓你每週都能夠吸收優質的Python應用教學唷。
你可能有興趣的文章
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqMPD_mPLEileg1IdrsIYhFSWZkYFKYmEnUqWqiqdiJv2XYnkT23CFcXoTN6HBtGCEUylgVoUIVKm6KPRPM_TjcjsSei4lGE_YmZdrWA6Ulw1fp6-o8Cn-bVwr7_FANFoC4tjTe-ak6w-atFYq-a1pipQbZvQzt4wHRNK7tywcSG0dSCnpJpqoMP5wA/s1600/Python%E7%B6%B2%E9%A0%81%E7%88%AC%E8%9F%B2%E5%85%8D%E8%B2%BB%E7%B7%9A%E4%B8%8A%E5%9F%B9%E8%A8%93.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-fK9Da5M7X1lSpbZVan4Eo-PunVnQv-YHw3EDahTUhZr5FayVLaCPqrW44W3_xwQQO-gAWZEwe_A-SxL_nltT__ArbFOgLYAAIsi3RzETT9GqVsfyfN9PXDs-xGTkxZSqj_W1SCxwD2UcrJLqHZSYIrLB-HIU75vSom4YoqoWFUQz_o4PbnvTQUbE6Bab/w640-h426/2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61JC7N1hyphenhyphenPpzb1hNJauunevoWrOsJxk_Upz0ywnLtIAJ2rdd1ZxChyphenhyphenFPq8GHYfywtHv2mTce5NGdwwxWFWYARhA6In0xlOzkwlRb9kM04mwgdy9Un9JgVCoLQnwV25oUcitQy2OY4TeA3gVIs067wR4StGfkldbykOeL3TfPchWfNClWKhL10ZzWaxFtf/w640-h426/3.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1XFQE0AmkZHSFB0Icq3uY4_FdsIYZ9nUqllOlo9ulRu0ri-LS1OeW2ybKOO2QRg-gyUOUr_3sMLYf7S4Q5ULZpIcXsS1pAkSMPm0OwqpbnLET51WEpQ3EoY5WaEVEWyTixBkRqp2tA7SpePM_MCIY6tnyUvu917rulqbLJTEEPsEho6Q-4Tf74DFdakd/w640-h426/4.png)
留言
張貼留言