方格精選

[Python]Selenium 自動滾動網頁並抓取文章連結

更新於 發佈於 閱讀時間約 8 分鐘

使用 Selenium 自動滾動網頁並抓取文章連結

在網頁爬蟲開發中,我們經常遇到需要自動滾動頁面以加載新內容的場景,特別是在一些無限滾動的頁面中(例如新聞網站或社交媒體)。

本文將介紹如何使用 Python 的 Selenium 庫來實現這一需求,並抓取頁面中的VCC自己文章的連結。

raw-image



前置準備

在開始實作之前,確保你已完成以下準備:

  1. 安裝 Python 和 Selenium
    可以通過 pip 安裝 Selenium:
    pip install selenium
  2. 準備要爬取的網站
    本文以一個自己的文章列表頁面為例。
    網頁按右鍵,在按檢查就會顯示網頁的 HTML 結構
raw-image

在隨意複製其中一篇文章網址連結,按ctr鍵加F,搜尋複製的網址,試圖找出關聯性。

發現跟文章網址有關聯的標籤名稱為<a> ,有關鍵字article利用此特性來篩選出所有文章的內容

raw-image



實作步驟

以下是完整的程式碼,包含自動滾動網頁並提取文章連結的功能:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

def get_article_links_with_scroll(base_url):
try:
# 初始化瀏覽器
driver = webdriver.Chrome() # 確保安裝了對應的 WebDriver
driver.get(base_url)
time.sleep(2) # 等待頁面初始加載

# 模擬向下滾動
scroll_pause_time = 2 # 每次滾動後的等待時間
last_height = driver.execute_script("return document.body.scrollHeight") # 獲取滾動條初始高度
links = set() # 用於儲存文章鏈接

while True:
# 滾動到底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(scroll_pause_time) # 等待新內容加載

# 獲取新高度並檢查是否到達底部
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break # 如果滾動條高度未變化,說明已經到底部
last_height = new_height

# 提取文章鏈接
page_links = driver.find_elements(By.TAG_NAME, "a")
for link in page_links:
href = link.get_attribute("href")
if href and 'article' in href: # 篩選包含 'article' 的鏈接
links.add(href)

driver.quit() # 關閉瀏覽器
return links

except Exception as e:
print(f"錯誤: {e}")
return set()

# 測試網址
base_url = "https://vocus.cc/salon/crab/room/Crab_OpenCV" # 替換為你的網站首頁或文章列表頁面
article_links = get_article_links_with_scroll(base_url)

# 輸出所有文章鏈接
print("找到的文章鏈接:")
for link in article_links:
print(link)

程式碼詳解

1. 初始化 Selenium

driver = webdriver.Chrome()
driver.get(base_url)
time.sleep(2) # 等待頁面初始加載

這段程式碼用來啟動 Chrome 瀏覽器並訪問指定的 base_url


2. 滾動頁面

last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(scroll_pause_time)
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height

這段程式碼使用 JavaScript 指令 window.scrollTo 將頁面滾動到底部,並通過比較滾動高度來判斷是否已經到達頁面底部。


3. 提取文章連結

page_links = driver.find_elements(By.TAG_NAME, "a")
for link in page_links:
href = link.get_attribute("href")
if href and 'article' in href:
links.add(href)

這部分程式碼遍歷頁面中的所有 <a> 標籤,並篩選出包含 article 關鍵字的連結。


運行結果

執行程式後,所有符合條件的文章連結將會被輸出到終端,例如:

找到的文章鏈接:
https://vocus.cc/article/12345
https://vocus.cc/article/67890

注意事項

  1. 滾動等待時間
    設置合適的 scroll_pause_time,以確保新內容能夠完全加載。
  2. 鏈接篩選條件
    根據網站結構調整 if 'article' in href 的條件,避免抓取無關的連結。
  3. 動態內容網站
    如果頁面內容是通過 AJAX 加載的,滾動後可能需要更長的等待時間。

結語

透過 Selenium,我們能輕鬆模擬瀏覽器操作,自動滾動頁面並抓取需要的資料。在實際應用中,根據網站結構靈活調整爬取邏輯,能幫助我們高效地完成數據收集。

希望本文能幫助你解決相關需求!如果有任何問題,歡迎留言討論。 😊

留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
148會員
255內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
你可能也想看
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
本文介紹使用 VBA 進行網頁抓取的優點與範例,並比較 VBA 與 Python 在爬蟲應用上的差異,指出 VBA 在企業內部環境、小數據量採集任務的優勢。
Thumbnail
本文介紹使用 VBA 進行網頁抓取的優點與範例,並比較 VBA 與 Python 在爬蟲應用上的差異,指出 VBA 在企業內部環境、小數據量採集任務的優勢。
Thumbnail
使用 Selenium 自動滾動網頁並抓取文章連結 在網頁爬蟲開發中,我們經常遇到需要自動滾動頁面以加載新內容的場景,特別是在一些無限滾動的頁面中(例如新聞網站或社交媒體)。 本文將介紹如何使用 Python 的 Selenium 庫來實現這一需求,並抓取頁面中的VCC自己文章的連結。
Thumbnail
使用 Selenium 自動滾動網頁並抓取文章連結 在網頁爬蟲開發中,我們經常遇到需要自動滾動頁面以加載新內容的場景,特別是在一些無限滾動的頁面中(例如新聞網站或社交媒體)。 本文將介紹如何使用 Python 的 Selenium 庫來實現這一需求,並抓取頁面中的VCC自己文章的連結。
Thumbnail
本篇文章介紹網路爬蟲的基本概念和操作流程,適合初學者瞭解爬蟲的功能與合法使用方式。文章說明爬蟲如何自動蒐集資料及 API 的重要角色,同時提醒用戶注意指南與網站規範。作者也自己嘗試網路爬蟲。也期許自己可以在未來學習到網頁時,能成功操作 LinkedIn 的爬蟲
Thumbnail
本篇文章介紹網路爬蟲的基本概念和操作流程,適合初學者瞭解爬蟲的功能與合法使用方式。文章說明爬蟲如何自動蒐集資料及 API 的重要角色,同時提醒用戶注意指南與網站規範。作者也自己嘗試網路爬蟲。也期許自己可以在未來學習到網頁時,能成功操作 LinkedIn 的爬蟲
Thumbnail
寫完一篇文章後,你總會好奇我的文章流量到底隨著時間每天到底成長了多少,或是當你看著數據圖表的時候,你很想知道你的每日的總瀏覽量是來自於哪一篇文章。 因為這個原因,我嘗試用程式碼解決。
Thumbnail
寫完一篇文章後,你總會好奇我的文章流量到底隨著時間每天到底成長了多少,或是當你看著數據圖表的時候,你很想知道你的每日的總瀏覽量是來自於哪一篇文章。 因為這個原因,我嘗試用程式碼解決。
Thumbnail
網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
Thumbnail
網路爬蟲(web crawler),也叫網路蜘蛛(spider) 是一個強大的自動化工具,可以自由瀏覽、擷取訪問網頁的各項資訊,例如:新聞文章、電商商品價格,當專案中需要添加外部數據或進行大量資料收集時,網路爬蟲就是一個非常實用的工具。
Thumbnail
俗話說的好:科技始終來自於人性。網頁爬蟲工具,可以幫助人類完成重複性高且枯燥、瑣碎的收集過程。我透過本次有目的的實作,也算是初嘗網頁爬蟲的甜頭,未來應該還是會努力學習Python,畢竟能自己寫程式,就代表能自動化處理更多種樣態的工作。
Thumbnail
俗話說的好:科技始終來自於人性。網頁爬蟲工具,可以幫助人類完成重複性高且枯燥、瑣碎的收集過程。我透過本次有目的的實作,也算是初嘗網頁爬蟲的甜頭,未來應該還是會努力學習Python,畢竟能自己寫程式,就代表能自動化處理更多種樣態的工作。
Thumbnail
你知道「爬蟲」是什麼嗎?簡單來說,爬蟲便是設計一個程式機器人,使其按照一定的規則自動抓取網頁上的資訊,協助使用者快速查詢,並進行後續分析討論。爬蟲的應用相當多元且便利,而 UiPath 也有 Table Exaction 功能可以讓我們快速抓取網頁資訊!
Thumbnail
你知道「爬蟲」是什麼嗎?簡單來說,爬蟲便是設計一個程式機器人,使其按照一定的規則自動抓取網頁上的資訊,協助使用者快速查詢,並進行後續分析討論。爬蟲的應用相當多元且便利,而 UiPath 也有 Table Exaction 功能可以讓我們快速抓取網頁資訊!
Thumbnail
本教學從 網路爬蟲 至 機器學習基礎 到 TensorFlow深度學習框架。 網路爬蟲 Beautiful Soup 安裝beautifulsoup4,用來分析html資料 安裝requests套件,將html資料抓回來顯示 lxml ,用於解析和編輯 XML 和 HTML 文檔 html5lib
Thumbnail
本教學從 網路爬蟲 至 機器學習基礎 到 TensorFlow深度學習框架。 網路爬蟲 Beautiful Soup 安裝beautifulsoup4,用來分析html資料 安裝requests套件,將html資料抓回來顯示 lxml ,用於解析和編輯 XML 和 HTML 文檔 html5lib
Thumbnail
萬能的google news推送了我一篇文章: 用交友軟體 看看內容越來越熟悉,阿靠這不就我前陣子寫的想要對象的人都應該去用交友軟體 這真的是很有趣,方格子寫文章一毛也拿不到,為啥要複製貼上? 因為我開限時免費就先節錄? 總之只好先檢舉,希望系統會給個交代
Thumbnail
萬能的google news推送了我一篇文章: 用交友軟體 看看內容越來越熟悉,阿靠這不就我前陣子寫的想要對象的人都應該去用交友軟體 這真的是很有趣,方格子寫文章一毛也拿不到,為啥要複製貼上? 因為我開限時免費就先節錄? 總之只好先檢舉,希望系統會給個交代
Thumbnail
久久沒更新,把這幾天更新在wordpress的文章搬過來囉! 這是篇自己練習爬蟲,並把爬下來的文字內容透過jieba套件分析後產出文字雲的小練習專案
Thumbnail
久久沒更新,把這幾天更新在wordpress的文章搬過來囉! 這是篇自己練習爬蟲,並把爬下來的文字內容透過jieba套件分析後產出文字雲的小練習專案
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News