首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 解析 HTML 遇 PC/移動端結構差異:User-Agent 決定返回內容

     編輯:程式設計綜合問答

現象:同一 URL,Eclipse (PC) 獲取的 HTML class 與 Android Studio (模擬器/真機) 不同,導致 Jsoup 選擇器失效。

根因

服務器根據請求頭 User-Agent 判斷客戶端類型,**返回不同 DOM 結構**(響應式設計/動態服務端渲染)。

驗證方法

  1. PC 瀏覽器 F12 → Network → 查看請求 UA。
  2. Android 代碼打印 HttpURLConnection 默認 UA。
  3. 用 curl -A "Mozilla/5.0 (Linux; Android 10)..." URL 模擬移動端抓取對比。

解決方案

  1. 統一 User-Agent:
    Android 端設置 connection.setRequestProperty("User-Agent", "PC瀏覽器UA字符串"),強制獲取 PC 版 HTML。
  2. 適配多套選擇器:
    代碼中嘗試 PC 選擇器失敗後 fallback 移動端選擇器。
  3. 使用無頭瀏覽器:
    服務端用 Puppeteer/Playwright 渲染後再解析,獲取統一 DOM。

最佳實踐

  • 優先調用官方 API,避免解析脆弱的 HTML。
  • 若必須爬蟲,緩存選擇器映射表,網站改版時只需更新配置。
  • 遵守 robots.txt 與速率限制,法律合規。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved