方格精選

[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
螃蟹_crab的沙龍
159會員
314內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。 興趣是攝影,踏青,探索未知領域。 人生就是不斷的挑戰及自我認清,希望老了躺在床上不會後悔自己什麼都沒做。
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
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