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

使用pywebcopy下载skroutz.gr网页无法获取完整内容该如何解决

问题原因

下载内容不全主要来自两个核心原因:

  1. 目标站点有反爬校验,pywebcopy默认的请求特征会被识别为爬虫,仅返回部分内容
  2. 页面大量内容依赖JavaScript动态渲染加载,pywebcopy默认不执行JS代码,无法抓取异步加载的商品参数、评价、相关推荐等内容

解决方案

方案1:调整pywebcopy配置(无需额外依赖,适合静态内容为主的场景)

pywebcopy底层已经封装了requests请求逻辑,优先补充自定义请求头伪装正常浏览器,调整后代码如下:

from pywebcopy import save_webpage

# 伪装Chrome浏览器的请求头,避免被反爬拦截
custom_headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Accept-Language": "el-GR,el;q=0.9,en;q=0.8",
    "Referer": "https://www.skroutz.gr/"
}

url = 'https://www.skroutz.gr/s/23283554/Asus-Prime-Z490-P-Motherboard-ATX-%CE%BC%CE%B5-Intel-1200-Socket.html'
download_folder = '/path/to/downloads/'    

kwargs = {
    'bypass_robots': True,
    'project_name': 'recognisable-name2',
    'headers': custom_headers,
    'timeout': 30, # 延长超时时间避免加载中断
    'load_css': True,
    'load_js': True,
    'load_images': True
}

save_webpage(url, download_folder, **kwargs)

如果调整后仍无法拿到完整内容,说明页面动态加载占比高,需要换支持JS渲染的工具。

方案2:用Playwright模拟浏览器加载(适合动态内容场景,可拿到完整渲染后页面)

Playwright会启动真实浏览器内核执行所有JS代码,等待页面完全加载后再抓取内容,操作步骤如下:

  1. 安装依赖:
    pip install playwright && playwright install chromium
  2. 示例代码:
from playwright.sync_api import sync_playwright

target_url = 'https://www.skroutz.gr/s/23283554/Asus-Prime-Z490-P-Motherboard-ATX-%CE%BC%CE%B5-Intel-1200-Socket.html'
save_path = '/path/to/downloads/full_skroutz_page.html'

with sync_playwright() as p:
    # 启动无头Chrome浏览器
    browser = p.chromium.launch(headless=True)
    page = browser.new_page(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    )
    # 等待页面所有网络请求结束后再操作
    page.goto(target_url, wait_until="networkidle", timeout=60000)
    # 获取完整渲染后的HTML源码
    full_page_content = page.content()
    # 保存到本地
    with open(save_path, "w", encoding="utf-8") as f:
        f.write(full_page_content)
    # 如需同时下载CSS、图片等附属资源,可以将拿到的HTML传给pywebcopy做后续解析下载
    browser.close()

关于是否需要结合requests的说明

pywebcopy底层已经封装了requests的请求逻辑,常规场景不需要额外编写requests相关代码。如果需要提前手动处理Cookie、过站点校验,可以先调用requests拿到有效凭证后再传给pywebcopy使用。如果是动态内容场景,额外加requests也无法解决问题,因为requests本身也不支持JS执行,无法拿到异步加载的内容。

内容的提问来源于stack exchange,提问作者Ας Μαθουμε

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:00