在網頁爬蟲開發中,我們經常遇到需要自動滾動頁面以加載新內容的場景,特別是在一些無限滾動的頁面中(例如新聞網站或社交媒體)。
本文將介紹如何使用 Python 的 Selenium 庫來實現這一需求,並抓取頁面中的VCC自己文章的連結。
在開始實作之前,確保你已完成以下準備:
pip install selenium
在隨意複製其中一篇文章網址連結,按ctr鍵加F,搜尋複製的網址,試圖找出關聯性。
發現跟文章網址有關聯的標籤名稱為<a>
,有關鍵字article利用此特性來
篩選出所有文章的內容
以下是完整的程式碼,包含自動滾動網頁並提取文章連結的功能:
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)
driver = webdriver.Chrome()
driver.get(base_url)
time.sleep(2) # 等待頁面初始加載
這段程式碼用來啟動 Chrome 瀏覽器並訪問指定的 base_url
。
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
將頁面滾動到底部,並通過比較滾動高度來判斷是否已經到達頁面底部。
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
scroll_pause_time
,以確保新內容能夠完全加載。if 'article' in href
的條件,避免抓取無關的連結。透過 Selenium,我們能輕鬆模擬瀏覽器操作,自動滾動頁面並抓取需要的資料。在實際應用中,根據網站結構靈活調整爬取邏輯,能幫助我們高效地完成數據收集。
希望本文能幫助你解決相關需求!如果有任何問題,歡迎留言討論。 😊