跟著IG潮流來爬蟲!如何爬取動態加載網頁(附Python程式碼)
歡迎來到 Selenium 動態網頁爬蟲系列文章第二篇~
本篇文章將為您詳細解說如何使用 Selenium 爬取 Instagram 貼文短連結想知道如何用Selenium自動登入IG?點擊下方連結觀看:
跟著IG潮流來爬蟲-用Selenium帶您自動登入 IG -系列1(附Python程式碼)
為何需要爬取貼文短連結呢?
貼文連結是爬取 Instagram 貼文中最重要的一環!
短連結就像是貼文的身份證字號,可以做為貼文的依據,用來辨識每篇貼文,在後續分析時也可藉由連結回頭檢視,驗證爬取資訊的正確性。在爬取資料時,若是能將文章的短連結也同時爬下,對於後續資料分析,會非常有幫助,因為當我們想要回頭檢視更多細部的文字、網頁內容時,貼連結可以讓我快速的檢閱。
接下來,我們就開始教各位如何獲取這些短連結的資料吧!!
網頁檢視器概念說明
以 bbcnews 的粉絲專頁為例(https://www.instagram.com/bbcnews/),
當我們打開網頁檢視器 (Windows 系統:請按 F12;MacOS 系統:option+command+c) 時,可以在網頁右側看到以下視窗,如圖一。
接著,點選彈出視窗上方的 Elements,檢視網頁,如圖二所示。
進入到Elements的介面之後,會看到詳細的網頁程式碼,然而,我們難以在短時間內辨識出各程式碼的功用。這時我們可以點選視窗左上角的小鼠標,當我們任意的在網頁上滑動時,旁邊的灰色網底區塊應該也會跟著移動,如圖三。也就是當我們將鼠標移到網站中的任意區塊做點擊,它就會自動幫我們找到鼠標對應區塊的網頁元素!
尋找短連結所在位置
雖然平常不會注意到,但是可以發現當我們將滑鼠移至IG貼文上方時,就會在左下角或右下角的位置出現所在貼文的連結,如圖四,因此我們可以推斷貼文的連結可能是包含在貼文區塊當中。
再來,我們就可以使用剛剛提到的小鼠標功能,點擊貼文區塊,找出對應的網頁程式碼,如圖五。
此時,就會發現原來貼文的短連結包含在貼文區塊當中!
從圖六當中可以看到它被存放在 href 的屬性裡面,這是要作為接下來爬取的依據。
順帶一提,從圖六當中我們可以看見貼文短連結的形式是依照 “ /p/貼文編號/ ”,因此在之後的 Instagram 爬蟲系列文章也將會是依照這樣的形式來做使用。
知道了貼文短連結的所在位置之後,我們就可以開始把他們抓下來囉!
開始之前,我們先打開 Python3 編輯器和 Chromedriver,
完成開啟 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