跟著IG潮流來爬蟲!如何爬取動態加載網頁(附Python程式碼)

行銷資料科學
Marketingdatascience
9 min readJan 6, 2022

歡迎來到 Selenium 動態網頁爬蟲系列文章第二篇~
本篇文章將為您詳細解說如何使用 Selenium 爬取 Instagram 貼文短連結

想知道如何用Selenium自動登入IG?點擊下方連結觀看:
跟著IG潮流來爬蟲-用Selenium帶您自動登入 IG -系列1(附Python程式碼)

為何需要爬取貼文短連結呢?

貼文連結是爬取 Instagram 貼文中最重要的一環!
短連結就像是貼文的身份證字號,可以做為貼文的依據,用來辨識每篇貼文,在後續分析時也可藉由連結回頭檢視,驗證爬取資訊的正確性。在爬取資料時,若是能將文章的短連結也同時爬下,對於後續資料分析,會非常有幫助,因為當我們想要回頭檢視更多細部的文字、網頁內容時,貼連結可以讓我快速的檢閱。

(資料畫面來源:https://www.instagram.com/p/CGTFa-EHt2q/

接下來,我們就開始教各位如何獲取這些短連結的資料吧!!

網頁檢視器概念說明

以 bbcnews 的粉絲專頁為例(https://www.instagram.com/bbcnews/),
當我們打開網頁檢視器 (Windows 系統:請按 F12;MacOS 系統:option+command+c) 時,可以在網頁右側看到以下視窗,如圖一

圖一、網頁檢視器(資料畫面來源:https://www.instagram.com/bbcnews/

接著,點選彈出視窗上方的 Elements,檢視網頁,如圖二所示。

圖二、點擊網頁元素選項(資料畫面來源:https://www.instagram.com/bbcnews/

進入到Elements的介面之後,會看到詳細的網頁程式碼,然而,我們難以在短時間內辨識出各程式碼的功用。這時我們可以點選視窗左上角的小鼠標,當我們任意的在網頁上滑動時,旁邊的灰色網底區塊應該也會跟著移動,如圖三。也就是當我們將鼠標移到網站中的任意區塊做點擊,它就會自動幫我們找到鼠標對應區塊的網頁元素!

圖三、檢測元素的鼠標(資料畫面來源:https://www.instagram.com/bbcnews/

尋找短連結所在位置

雖然平常不會注意到,但是可以發現當我們將滑鼠移至IG貼文上方時,就會在左下角或右下角的位置出現所在貼文的連結,如圖四,因此我們可以推斷貼文的連結可能是包含在貼文區塊當中。

圖四、貼文短連結顯示處(資料畫面來源:https://www.instagram.com/bbcnews/

再來,我們就可以使用剛剛提到的小鼠標功能,點擊貼文區塊,找出對應的網頁程式碼,如圖五

圖五、點擊貼文區塊元素(資料畫面來源:https://www.instagram.com/bbcnews/

此時,就會發現原來貼文的短連結包含在貼文區塊當中!
圖六當中可以看到它被存放在 href 的屬性裡面,這是要作為接下來爬取的依據。

圖六、貼文短連結網頁元素

順帶一提,從圖六當中我們可以看見貼文短連結的形式是依照 “ /p/貼文編號/ ”,因此在之後的 Instagram 爬蟲系列文章也將會是依照這樣的形式來做使用。

知道了貼文短連結的所在位置之後,我們就可以開始把他們抓下來囉!

開始之前,我們先打開 Python3 編輯器和 Chromedriver,

想知道 Chromedriver的強大請見此
如何透過 Selenium登入 Instagram請見此

完成開啟 Chromedriver 並登入之後,就可以開始執行以下的程序了。

開始爬取貼文的短連結

首先將需要用到的套件import進來,如程式碼 1

接下來進入到IG粉專的頁面,如程式碼 2

最後執行底下的程式碼 3 就可以找到貼文的短連結啦~

以上程式碼解析

接下來為各位做以上程式碼的解析

由於 Instagram 是一個動態加載的網頁,若沒有將網頁下滑就會無法加載較底下的貼文

這時,我們可以使用「for 迴圈」來根據想要下滑的次數,將網頁下滑並加載,如下程式碼。

for i in range(n_scroll):

而下滑的方法我們使用 Javascript 中的 window.scrollTo() ,
每一次都將頁面下滑到底,如下程式碼。

scroll = 'window.scrollTo(0, document.body.scrollHeight);'    browser.execute_script(scroll)

加載完成之後,運用 page_source 將所有的網頁原始碼抓取下來,如下程式碼。

html = browser.page_source 
soup = Soup(html, ‘lxml’)

經過 beautifulsoup 整理過後,找出其中包含 href 屬性的標籤。

圖七、貼文短連結標籤位置

回到圖七網頁元素這邊來觀察,可以看到它的標籤位置存在於 article > div > div > div > div > a 底下,使用 soup.select 來取得這個標籤位置底下的元素,如下程式碼。

soup.select('article div div div div a')

最後再用一個迴圈來將所有的貼文短連結存放至自己的列表當中,如下程式碼。

# 尋找所有的貼文連結
for elem in soup.select('article div div div div a'):
if elem['href'] not in post_url:
post_url.append(elem['href'])

這時貼文短連結就成為您的囊中之物了!

以上就是爬取 Instagram 貼文短連結的完整技巧了,
本篇完整的程式碼在此分享給您,讓您也可以增強爬蟲功力~
如果喜歡我的文章,記得幫我拍個手!!

作者:黃鈺淇(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)

◆◆◆ TMR最強新書與新課報到◆◆◆

📣新課募資倒數五天!

【Excel Power BI 實戰商品搭售分析與視覺化】

超值募資價:$2,288(原價$2,888)

募資期間:即日起 至 1/7(五) 23:59

您可以學到:

購物籃分析資料前處理:利用 Power Query 進行資料前處理,將資料轉換成購物籃分析格式,以利後續找出潛在顧客購物籃中的熱門產品。
產品搭售方法解析:運用 Power Pivot(Excel Power BI) 及 Power View(Power BI),從銷售資料中找出可能的產品搭售。
財務指標分析:運用 Power Pivot(Excel Power BI) 及 Power View(Power BI),從財務價值觀點,找到具獲利效益的產品搭售及產品搭售的建議售價。
應用於自我商城經營:把購物籃分析結果應用於電商平台中,帶領您優化自我商城經營,達到提升營業額的目標。

💡 點此連結,購課詳情輕鬆看

📣新課快報

【Python輿情應用趣:顧客樣貌分析攻略】

募資優惠價:$2,388

您可以學到:

👉技術面:網路爬蟲學習
◆ 爬蟲技術基礎至實戰教學,建構爬蟲能力,強化爬蟲技巧。
◆ 實戰全台最大輿情平台爬蟲,結合財務指標,搜羅消費者與市場銷售資料。

👉應用面:顧客樣貌與財務價值分析
◆ 帶您從消費者角度出發,找出消費者在意的重點關鍵字
◆ 以機器學習模型,進行顧客分群,找出重點顧客
◆ 從顧客樣貌分析角度出發,檢視市場上不同區隔的消費者行為與樣貌
◆ 從財務價值分析角度出發,找出有價值的客群市場,協助行銷策略制定

💡 點此連結,購課詳情輕鬆看

📣新書快報

【最強行銷武器 — 整合行銷研究與資料科學】

特惠價格: $458(原價:$580) 79折特惠中

💡 點此連結立即預購

— — — — — — — — — — —

往後的文章都會持續在行銷資料科學粉絲專頁上發表喔,喜歡我們就趕緊追蹤吧!

同時再請大家多多follow我們的FB粉絲專頁,我們會在粉專上即時公布最新資訊,讓您重要消息不漏接!

FB粉絲專頁:行銷資料科學

官網:臺灣行銷研究

歡迎加入我們的LINE社群,一起交流行銷資料科學相關知識!

---------------------------------
歡迎加入我們的Line@獲取即時訊息!https://line.me/R/ti/p/%40cde8265r

---------------------------------
歡迎加入我們的Telegram獲取即時訊息!https://t.me/marketingdatascience

--

--

行銷資料科學
Marketingdatascience

Marketing data science. 台灣第一個行銷資料科學(MDS)知識部落,本粉絲專頁在探討行銷資料科學之基礎概念、趨勢、新工具和實作,讓粉絲們瞭解資料科學的行銷運用,並開啟厚植數據分析能力之契機。粉絲專頁:https://www.facebook.com/MarketingDataScienceTMR