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

Python Selenium 獲取完整網頁 HTML 內容

     編輯:程式設計綜合問答

問題描述

使用 Selenium 獲取頁面完整 HTML(含標籤),嘗試代碼:

content = browser.find_element_by_id("").text
print(content)
filename = company_name + '.json'
f3 = codecs.open(filename, mode='wb', encoding='utf-8')
f3.write(content)
f3.close()
browser.close()

但 find_element_by_id("") 留空,且 .text 僅獲取可見文本,非完整 HTML。

正確獲取完整 HTML 的方法

1. 獲取整頁 HTML:page_source

html = browser.page_source  # 當前頁面完整 HTML 字符串
with open(filename, 'w', encoding='utf-8') as f:
    f.write(html)

無需定位元素,直接獲取渲染後的 DOM 序列化結果。

2. 獲取特定元素外層 HTML:get_attribute('outerHTML')

element = browser.find_element_by_id("your_element_id")  # 必須填寫真實 ID
html = element.get_attribute('outerHTML')

3. 獲取元素內部 HTML:get_attribute('innerHTML')

html = element.get_attribute('innerHTML')

代碼修正要點

  • ID 不能為空:find_element_by_id("") 會拋異常,需填寫目標元素的真實 ID。
  • .text 只返回純文本,不含標籤;需用 outerHTML 或 page_source。
  • 文件寫入編碼:Python 3 直接用 open(..., encoding='utf-8'),無需 codecs。
  • 副檔名:內容是 HTML 建議用 .html,而非 .json。

完整示例

from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://example.com')

# 方案 A:保存整頁
with open('page.html', 'w', encoding='utf-8') as f:
    f.write(browser.page_source)

# 方案 B:保存特定元素(需真實 ID)
try:
    elem = browser.find_element_by_id('content')
    with open('element.html', 'w', encoding='utf-8') as f:
        f.write(elem.get_attribute('outerHTML'))
except Exception as e:
    print('元素未找到:', e)

browser.quit()

總結

  • 整頁 HTML → browser.page_source
  • 單元素 HTML → element.get_attribute('outerHTML')
  • ID 必須具體,不可留空
  • 文件編碼用 utf-8,副檔名用 .html
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved