跟著IG潮流來爬蟲!如何爬取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的強大請見此
如何透過 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 貼文短連結的完整技巧了,
本篇完整的程式碼在此分享給您,讓您也可以增強爬蟲功力~
如果喜歡我的文章,記得幫我拍個手!!
更多Selenium相關文章連結:
- FB 爬蟲可以更簡單-用Selenium自動登入FB-系列1(附Python程式碼)
- 好奇自己FB的互動性指標嗎?!用Selenium爬蟲-搞定貼文按讚數、留言數、分享數-系列2(附Python程式碼)
- 用Selenium爬蟲-抓取FB文章內容、時間-系列3(附Python程式碼)
作者:黃鈺淇(臺灣行銷研究特邀作者)、鍾皓軒(臺灣行銷研究有限公司創辦人)
更多實戰案例及情境好文推薦
為什麼要用購物籃分析與協同過濾來看商務資料?
為什麼要用購物籃分析與協同過濾來看商務資料? 一般我們在進行商務資料分析時,總是會期望能透過過往所獲得的資料來發掘更多的商業洞察。一般店家在
您的請求陌生人是否會答應? - 不同情境下人們是否願意捐贈披薩
您的請求陌生人是否會答應? - 不同情境下人們是否願意捐贈披薩 情境 「今天是我丈夫的生日,我想帶他出去吃晚餐但沒有足夠的錢,如果能有披
透過機器學習預測股市漲跌 - 進階資料處理(附Python程式碼)
透過機器學習預測股市漲跌 - 進階資料處理(附Python程式碼) 此為系列文第二篇點此回顧 第一篇:透過機器學習預測股市漲跌-基本資料處理