You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python获取网站Inspect中的动态内容?两类报错求解决

动态页面内容爬取问题解决方案

一、关于urllib无法获取JS渲染内容的原因

urllib.request.urlopen只能获取服务器返回的原始静态HTML,不会执行页面中的JavaScript代码,所以动态生成的表格这类内容不会出现在返回的源码里,和浏览器Inspect看到的内容自然不一致。

二、修复json.load报错的问题

你直接用json.load(urllib.request.urlopen(url))报错,核心原因是目标URL返回的不是纯JSON数据,而是HTML页面。要解决这个问题,需要找到网站加载表格数据的真实API接口:

  • 打开浏览器开发者工具(F12),切换到「网络」标签页,刷新页面
  • 筛选「XHR/Fetch」类型的请求,找到返回JSON格式且包含表格数据的请求
  • 复制该请求的URL,再用json.load加载这个API地址

如果仍报错,补充两点检查:

  1. 确认该API请求的响应头中Content-Type为application/json
  2. 添加请求头模拟浏览器访问,避免被拦截,示例代码:
import urllib.request
import json

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
req = urllib.request.Request(url='真实API接口地址', headers=headers)
response = urllib.request.urlopen(req)
table_data = json.load(response)

三、修复Selenium ChromeDriver报错(状态码127)

Replit环境默认没有安装Chrome浏览器和对应驱动,导致webdriver.Chrome()启动失败,按以下步骤修复:

  1. 在Replit的Shell执行命令,安装依赖:
sudo apt-get update && sudo apt-get install -y chromium-browser chromium-chromedriver
  1. 修改代码,指定浏览器和驱动路径,并配置无头模式(适合服务器环境):
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.binary_location = '/usr/bin/chromium-browser'

driver = webdriver.Chrome(
    options=options,
    executable_path='/usr/bin/chromedriver'
)

driver.get('目标页面URL')
# 显式等待表格加载完成,最多等待10秒
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.TAG_NAME, 'table'))
)
full_page_source = driver.page_source  # 这就是浏览器Inspect中的完整内容
driver.quit()

四、更轻量的替代方案:使用requests-html

如果觉得Selenium配置麻烦,可以用requests-html库,它内置JS渲染引擎,用法更简洁:

  1. 在Replit的Shell安装库:
pip install requests-html
  1. 示例代码:
from requests_html import HTMLSession

session = HTMLSession()
resp = session.get('目标页面URL')
resp.html.render()  # 执行页面JS渲染

# 获取所有表格元素
tables = resp.html.find('table')
for table in tables:
    print(table.html)  # 输出表格的HTML内容
session.close()

内容的提问来源于stack exchange,提问作者CELLSecret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:30:29