在電商領域中,不論是賣家或買家,很多時候都會需要蒐集各個電商網站的商品、價格與評論等資料,來分析各種商品的價格、用戶滿意度,這時候就可以使用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應用教學唷。
留言
張貼留言