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

爬取加拿大超市网站时获取错误HTML代码的问题求助

解决方案:获取Real Canadian Superstore的动态渲染HTML/营养数据

你的问题核心是目标网站采用JavaScript动态渲染内容,urllib这类静态HTTP请求工具只能获取页面的初始骨架HTML,无法拿到浏览器执行JS后生成的实际内容(包括营养数据)。以下是两种适合新手的高效解决方案:

方案1:用Selenium模拟浏览器加载(直观易上手)

Selenium会模拟真实浏览器打开页面,等待JS执行完成后再获取完整HTML,完全还原手动浏览的效果。

步骤:

  1. 安装依赖:
    pip install selenium
    
  2. 下载对应浏览器的驱动(比如ChromeDriver,需和你的浏览器版本匹配),放到Python可调用的路径下。

示例代码:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 初始化Chrome浏览器驱动
driver = webdriver.Chrome()

try:
    # 打开目标商品页面
    driver.get('https://www.realcanadiansuperstore.ca/honey-nut-cheerios-breakfast-cereal-family-size-wh/p/21103495_EA')
    # 等待营养数据区域加载完成(可根据页面实际元素调整等待条件)
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CLASS_NAME, 'nutrition-facts'))
    )
    # 获取完整渲染后的HTML
    full_html = driver.page_source
    print(full_html)
    # 后续用你已掌握的方法从full_html提取营养数据即可
finally:
    # 关闭浏览器
    driver.quit()

方案2:直接请求后端API(更高效,无需模拟浏览器)

多数电商网站的商品数据(包括营养信息)是通过AJAX请求从后端API获取的,直接请求这类接口拿JSON数据,比解析HTML更高效。

抓包找API方法:

  1. 打开浏览器开发者工具(F12),切换到「Network」面板
  2. 刷新目标页面,筛选「XHR」或「Fetch」类型的请求
  3. 查找包含nutrition、product等关键词的请求,这类通常就是返回营养数据的接口

示例代码(需替换为实际抓包到的API地址):

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    # 可根据抓包结果补充Referer、Cookie等其他必要请求头
}

# 替换为实际抓包到的营养数据API地址
api_url = 'https://www.realcanadiansuperstore.ca/api/product/nutrition/21103495_EA'

response = requests.get(api_url, headers=headers)
nutrition_data = response.json()
print(nutrition_data)
# 直接从JSON结构中提取所需营养值即可

补充:你原代码的小语法错误

原代码中这一行存在语法问题,需拆分为两行:

# 错误写法
mystr = mybytes.decode("utf8") urlopen(fp).close()

# 正确写法
mystr = mybytes.decode("utf8")
urlopen(fp).close()

内容的提问来源于stack exchange,提问作者tina.m444

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:35:10