跳到主要內容

發表文章

目前顯示的是有「Selenium」標籤的文章

[2021 IT鐵人賽] Day 21:專案04 - Facebook爬蟲02 | Selenium

昨天結束在Facebook登入之後,今天就接續昨天的內容,以 木棉花的粉絲專頁 為例,來講怎麼爬下來貼文的內容吧! 進到木棉花粉專 time.sleep( 5 ) # 進入木棉花專頁 driver.get( "https://www.facebook.com/emuse.com.tw" ) time.sleep( 5 ) 其實就跟昨天一樣,使用 get() 函數進到木棉花的粉專。 time.sleep() 設定延遲是為了讓Facebook有處理資料的時間,這點在使用Selenium時很重要,如果你都不給延遲時間,就有可能因為資料還沒載入而出錯。 模擬滾輪下滑 昨天已經講過了Facebook必須往下滑動才會載入資料,所以現在就要讓Selenium模擬出使用者滑鼠往下滑動的行為。 # 往下滑3次,讓Facebook載入文章內容 for x in range ( 3 ): driver.execute_script( "window.scrollTo(0,document.body.scrollHeight)" ) print ( "scroll" ) time.sleep( 5 ) 這邊是讓Selenium執行JavaScript的程式,雖然我沒有講過JavaScript,但你只要知道這段程式就是控制瀏覽器向下滑1頁。而且每次下滑後都要給一點延遲時間載入資料。 擷取貼文內容 接下來,我們對貼文 右鍵>>檢查 ,發現到內容放在一個 class="kvgmc6g5 cxmmr5t8 oygrvhab hcukyx3x c1et5uql ii04i59q" 的 <div> 中。 再往下看,每一行文字都是放在 dir="auto" 的 <div> 中。 好,那麼程式碼就是這樣。 # 定位文章標題 titles = soup.find_all( "div...

[2021 IT鐵人賽] Day 20:專案04 - Facebook爬蟲01 | ChromeDriver、Selenium

圖片來源: https://unsplash.com/photos/m_HRfLhgABo 安安,今天是第20天了哦,離結束只剩最後1/3了,感覺時間過得真快呢~ 而且今天又是新的專案了哦! 這次要教的是我自己覺得非常有趣的 Selenium ,讓你的爬蟲技巧再多一招! 前幾天爬PTT八卦板的時候,都是先用requests套件取得網頁的原始碼再做分析,這樣的方法之所以成立,是因為PTT八卦板是屬於 靜態網頁 ,意思是網頁畫面一次就全部渲染好了,之後不會再有更動。但有些網站不是這樣(尤其是新的網站),比方說以Facebook為例,為了載入的效能,Facebook不會一口氣就將所有的貼文都顯示出來,而是你滾輪往下滑時,貼文才會一個個載入,這種網站就稱之為 動態網頁 。 這下子前面教的方法就不管用了阿,沒錯,所以這時就出現了新的方法 – Selenium 。 Selenium Selenium 是用於自動化 Web 瀏覽器的工具,可以協助測試人員做自動化測試,也是可以抓網頁內容的動態網頁爬蟲,常搭配 BeautifulSoup 解析 HTML 網頁原始碼。 換句話說,Selenium可以透過指令,模擬出使用者瀏覽網頁的行為,包括:點擊按鈕、輸入文字、滑動滾輪等。 Selenium主要有三項產品,分別是WebDriver、IDE和Grid,我們要用WebDriver來完成自動化的控制。 Selenium IDE也是滿方便的工具,用於錄製網頁腳本,並提供回放功能,但我沒有實際用過,有興趣的人可以研究看看。 因為Anaconda預設沒有Selenium套件,所以要先下載。 pip install selenium WebDriver 為了讓Selenium可以自動化控制瀏覽器,我們必須先安裝瀏覽器的驅動程式(driver),這裡提供兩種方式,選一個自己習慣的方式就好。 我都以Chrome瀏覽器為例,其他瀏覽器麻煩自己Google找一下 😅。 自己下載 ...