---
# System prepended metadata

title: 初始化 WebDriver

---

# DCARD 資料分析 
說明如何使用 Python 和 Selenium 蒐集到的 Dcard 文章資料進行分 析。這包括資料的前處理、分析方法、範例程式碼，以及可能遇到的問題。 
## 大綱 
資料蒐集回顧 
•  
Selenium 使用經驗 
•  
資料來源與範圍 
資料前處理 
•  
資料清洗 
•  
資料轉換 
•  
缺失值處理 
資料分析方法 
•  
文本分析 
•  
情感分析 
•  
網絡分析 
範例程式碼 

•  •  
Python 程式碼片段 

使用的套件與工具 問題意識與討論 
•  
資料偏見問題 
•  
隱私問題 

• 
分析限制 

結論與未來方向 參考資料 
第一章：資料蒐集回顧 
SELENIUM 使用經驗 
Selenium 是一個自動化測試工具，但在網頁爬蟲領域也有廣泛的應用。它模擬真 實用戶的行為，能夠操作瀏覽器，因此對於動態網頁（如 Dcard）來說，是一個非 常有效的資料蒐集工具。 
收集到的資料 
使用 Selenium，我們可以收集到以下類型的資料： 
1.  
文章標題 
2.  
文章內容 
3.  
作者資訊 
4.  
發布時間 

5.  6.  
回應數量和內容 

點讚和收藏數 
如何利用收集到的資料 
1.  
文本分析：透過 NLP（自然語言處理）工具，我們可以對文章內容進行情感 分析、主題模型等。 
2.  
社會網絡分析：透過作者和回應者之間的互動，我們可以建立社會網絡圖來分 析社群結構。 
3.  
趨勢分析：透過時間序列數據，我們可以分析某一主題或關鍵字的熱度變化。 4.  
用戶行為分析：透過點讚和收藏數，我們可以分析用戶對於某一主題或文章的 偏好。 
這些分析不僅可以用於學術研究，也可以應用在市場分析、公共政策評估等多個領 域。 
完整的資料搜集程式碼 
以下是一個使用 Python 和 Selenium 來蒐集 Dcard 文章資料的簡單範例程式碼。 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
# 初始化 WebDriver 
driver = webdriver.Chrome()
# 訪問 Dcard 網站 
driver.get('https://www.dcard.tw/') 
# 找到搜尋框並輸入關鍵字 
search_box = driver.find_element_by_name('query') search_box.send_keys('Python') 
search_box.send_keys(Keys.RETURN) 
# 獲取文章標題和連結 
titles =  
driver.find_elements_by_class_name('PostEntry_title') links =  
driver.find_elements_by_class_name('PostEntry_root') 
for title, link in zip(titles, links): 
 print(f'Title: {title.text}') 
 print(f'Link: {link.get_attribute('href')}') 
程式碼說明與回傳的具體內容 
1.  
初始化 WebDriver：這會啟動一個新的瀏覽器視窗。 
2.  
訪問 Dcard 網站：自動開啟 Dcard 的首頁。 
3.  
搜尋關鍵字：在搜尋框中輸入 'Python' 並執行搜尋。 
4. 
獲取文章標題和連結：這會列出所有與 'Python' 有關的文章標題和連結。 
具體回傳的內容舉例 
Title: Python 爬蟲入門 
Link: https://www.dcard.tw/f/programming/p/23456789 Title: Python 機器學習實戰 
Link: https://www.dcard.tw/f/programming/p/23456790 這些資料可以用於後續的文本分析、社會網絡分析等。 
第二章：大規模資料爬取與篩選 
在這一章中，我們將探討如何一次性地爬取與篩選大量的 Dcard 文章。由於 Dcard API 已經停止開放，我們的主要工具將是 Selenium 套件和 Python。 
2.1 爬取大量文章的方法 
1.  
多線程爬蟲：使用多線程可以加速資料的爬取速度。 
2.  
時間範圍設定：通過設定特定的時間範圍，可以更精確地獲取所需的資料。 
3.  
自動翻頁：使用 Selenium 的翻頁功能，以獲取更多頁面的資料。 
2.2 篩選文章的方法 
1.  
關鍵字過濾：使用特定的關鍵字或短語來過濾文章。 
2.  
數據篩選：例如，只選擇點讚數超過一定數量的文章。 3.  
時間篩選：根據發布時間來篩選文章，這對於趨勢分析非常有用。 範例程式碼 
from selenium import webdriver 
import time 
# 初始化 WebDriver 
chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') driver = webdriver.Chrome(options=chrome_options) 
# 訪問 Dcard 
url = 'https://www.dcard.tw/f' 
driver.get(url) 
# 自動翻頁並收集文章資料 
for i in range(5): # 翻5頁 
 driver.execute_script('window.scrollTo(0,  document.body.scrollHeight);') 
 time.sleep(2) # 等待2秒讓頁面加載
# 篩選文章 
articles =  
driver.find_elements_by_class_name('PostEntry_root') for article in articles: 
 title =  
article.find_element_by_class_name('PostEntry_title').tex t 
 like_count =  
int(article.find_element_by_class_name('Like_root').text)  if like_count > 100: # 篩選點讚數超過100的文章  print(f'Title: {title}, Like Count:  
{like_count}') 
2.3 物件和資料型態 
物件 
WebDriver: 這是 Selenium 套件中的一個物件，用於模擬瀏覽器行為。 
•  
資料型態：物件 
•  
例：driver = webdriver.Chrome(options=chrome_options) 
chrome_options: 這是一個 ChromeOptions 物件，用於設定 Chrome 瀏覽器的選 項。 
•  
資料型態：物件 
•  
例：chrome_options = webdriver.ChromeOptions() 
url: 這是一個字串，表示要訪問的網址。 
•  
資料型態：字串 (String) 
•  
例：url = 'https://www.dcard.tw/f' 
articles: 這是一個元素列表，每個元素代表一篇 Dcard 文章。 
•  
資料型態：列表 (List) 
•  
例：articles = driver.find_elements_by_class_name('PostEntry_root') title, like_count: 這些是字串和整數，分別存儲文章的標題和點讚數。 
• 
資料型態：字串 (String), 整數 (Integer) 
•  
例：title = article.find_element_by_class_name('PostEntry_title').text 方法 
add_argument(): 用於添加瀏覽器選項。 
•  
例：chrome_options.add_argument('--headless') 
get(): 用於訪問指定的網址。 
•  
例：driver.get(url) 
execute_script(): 用於執行 JavaScript 腳本。 
•  
例：driver.execute_script('window.scrollTo(0, 
document.body.scrollHeight);') 
sleep(): 用於暫停程式執行。 
•  
例：time.sleep(2) 
find_elements_by_class_name(): 用於找到所有具有指定類名的元素。 
•  
例：driver.find_elements_by_class_name('PostEntry_root') find_element_by_class_name(): 用於找到第一個具有指定類名的元素。 
•  
例：article.find_element_by_class_name('PostEntry_title') text: 用於獲取元素的文本內容。 
• 
例：article.find_element_by_class_name('PostEntry_title').text 
這個程式碼示例展示了如何使用多線程和自動翻頁來爬取大量的 Dcard 文章，並進 行篩選。 
