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

Python 爬蟲抓取網頁原始碼為空的原因與解決方案

     編輯:程式設計綜合問答

現象

使用 urllib2 抓取特定網頁(如應屆生求職網)時,回傳內容為空,且行為不穩定:有時能抓到,換頁或重跑幾十次又抓不到了。

可能原因

  1. 反爬蟲機制:目標網站可能檢測 User-Agent、Cookie 或請求頻率,攔截無頭請求。
  2. 編碼問題:頁面採用 GBK/GB2312 編碼,直接 .read() 解碼失敗導致顯示為空。
  3. 動態渲染:內容由 JavaScript 產生,靜態請求無法取得。

解決方案

1. 升級至 Python 3 + urllib3 / requests

import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'https://www.yingjiesheng.com/guangzhou-moreptjob-2.html')
print(r.data.decode('gbk'))  # 指定編碼解碼

2. 完善請求標頭

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
req = urllib2.Request(url, headers=headers)

3. 加入延遲與重試機制

使用 time.sleep(random.uniform(1,3)) 降低請求頻率,遇到空回應自動重試。

4. 若為動態頁面,改用 Selenium 或 requests-html

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved