Python requests.get获取KazanExpress商品页真实HTML失败求助
问题原因
你用requests获取到的是服务器返回的初始静态HTML,而KazanExpress这类电商网站的页面内容是通过JavaScript动态渲染生成的。requests无法执行浏览器端的JavaScript,所以只能拿到没有实际内容的页面框架,打开后自然是白屏。
解决方案:使用支持JS渲染的工具
这类工具会模拟真实浏览器的行为,执行页面中的JS并渲染出完整内容,常用的有Selenium和Playwright。
方法1:使用Selenium
- 先安装依赖:
pip install selenium
同时需要下载对应浏览器的驱动(比如Chrome的chromedriver),确保驱动版本和你的浏览器版本匹配。
- 示例代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options import time # 配置浏览器选项,可选无头模式(不显示浏览器窗口) chrome_options = Options() chrome_options.add_argument('--headless=new') chrome_options.add_argument('--disable-gpu') # 初始化浏览器驱动 driver = webdriver.Chrome(options=chrome_options) try: # 访问目标页面 driver.get('https://kazanexpress.ru/product/736692') # 等待页面加载完成(可根据网络情况调整时间,或用显式等待) time.sleep(3) # 获取渲染后的完整HTML page_source = driver.page_source # 保存到文件 with open('file.html', 'w', encoding='utf-8') as file: file.write(page_source) finally: # 关闭浏览器 driver.quit()
方法2:使用Playwright(更简洁,推荐)
Playwright是微软推出的自动化工具,自带浏览器驱动,配置更省心。
- 安装依赖:
pip install playwright playwright install chrome # 安装Chrome浏览器(也可选择firefox/webkit)
- 示例代码:
from playwright.sync_api import sync_playwright with sync_playwright() as p: # 启动浏览器,可选无头模式 browser = p.chromium.launch(headless=True) page = browser.new_page() # 访问目标页面,等待DOM加载完成 page.goto('https://kazanexpress.ru/product/736692', wait_until='domcontentloaded') # 获取渲染后的完整HTML page_source = page.content() # 保存文件 with open('file.html', 'w', encoding='utf-8') as file: file.write(page_source) # 关闭浏览器 browser.close()
注意事项
- 部分网站有反爬机制,频繁请求可能被封禁IP,建议添加合理的请求间隔,或配置代理。
- 优先用显式等待代替固定时间等待(比如Selenium的
WebDriverWait、Playwright的page.wait_for_selector),能更准确地等待页面元素加载完成,避免因网络延迟导致内容不全。
内容的提问来源于stack exchange,提问作者Lol_Bogomol
相关产品推荐
相关产品推荐

