淘寶、京東等現代電商網站大量使用 JavaScript 動態渲染、API 簽名驗證、反爬蟲機制(字體加密、滑塊驗證、IP 限流),單純 HttpClient + 正則已難以有效提取成交記錄等核心數據。
| 階段 | 技術棧 | 適用場景 | 局限性 |
|---|---|---|---|
| 1. 靜態頁面 | HttpClient + HtmlAgilityPack/正則 | 純 HTML、無 JS 渲染 | 無法獲取動態數據 |
| 2. AJAX 接口直調 | HttpClient + 模擬 Header/Cookie/簽名 | 找到內部 API、參數可逆向 | 簽名算法複雜、易失效 |
| 3. 無頭瀏覽器 | Selenium / PuppeteerSharp / Playwright | 完整模擬用戶行為、繞過大部分反爬 | 資源佔用高、速度慢、需維護驅動 |
| 4. 官方開放平台 | 淘寶開放平台/京東開放平台 API | 合法合規、數據權威、穩定 | 需企業資質、簽約、有調用配額 |
// NuGet
Install-Package Selenium.WebDriver
Install-Package Selenium.WebDriver.ChromeDriver
Install-Package Selenium.Support
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
var options = new ChromeOptions();
options.AddArgument("--headless"); // 無頭模式
options.AddArgument("--disable-gpu");
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");
options.AddArgument("user-agent=Mozilla/5.0 ..."); // 偽裝 UA
using (var driver = new ChromeDriver(options)) {
driver.Navigate().GoToUrl("https://item.jd.com/123456.html");
// 顯式等待關鍵元素加載
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until(d => d.FindElement(By.CssSelector(".sku-name")).Displayed);
// 提取數據
string title = driver.FindElement(By.CssSelector(".sku-name")).Text;
string price = driver.FindElement(By.CssSelector(".p-price")).Text;
// 處理動態加載的評價/成交記錄
((IJavaScriptExecutor)driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight);");
Thread.Sleep(2000); // 等待懶加載
var comments = driver.FindElements(By.CssSelector(".comment-item"));
foreach (var c in comments) { /* 解析 */ }
}
Thread.Sleep(Random.Next(1000, 3000))undetected-chromedriver 移植版)強烈建議:走官方開放平台(淘寶聯盟/京東聯盟/多多進寶),合法獲取商品、訂單、佣金數據。