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

Python爬取JS渲染、源码不含目标内容的网站数据方案

针对JS渲染站点的企业信息爬取落地方案

优先方案:直接调用站点后端接口(无浏览器依赖,效率最高)

这类靠JS渲染内容的站点,本质是页面加载后主动请求后端接口拿数据再渲染到页面上,完全不需要模拟浏览器操作:

  • 打开任意目标页面按F12调出开发者工具,切换到网络面板,筛选XHR类型请求后刷新页面,就能找到返回企业结构化数据的接口,这类接口一般直接返回JSON格式数据,不需要做HTML解析
  • 从你已有的链接集合里提取每个公告的唯一ID,拼接成接口请求路径,用requests库批量发请求即可,请求时带上常规的浏览器User-Agent头就能正常拿到返回结果,没有复杂鉴权限制
  • 直接从返回的JSON里匹配orgnr、företagsnamn、säte对应的字段值,按你需要的列表结构拼接存储就行,单请求耗时不到1秒,批量爬取的效率是模拟浏览器方案的10倍以上,也完全不会遇到浏览器启动失败的问题

备选方案:换用自动驱动管理的无头浏览器方案

如果不想做接口逆向,直接换掉你之前的Firefox+手动配驱动的Selenium组合,从根源解决启动失败问题:

  • 首推Playwright库,安装时会自动匹配下载对应版本的浏览器内核和驱动,不需要手动找资源、配环境变量,从根本上避免驱动和浏览器版本不匹配导致的启动失败
    安装直接执行两行命令:
    pip install playwright
    playwright install chromium
    
    核心爬取逻辑参考:
    from playwright.sync_api import sync_playwright
    import json
    import time
    import random
    
    # 你的链接集合
    target_links = ["链接1", "链接2", "链接3"]
    result = []
    
    with sync_playwright() as p:
        # 无头模式启动,不会弹出浏览器窗口
        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")
        for url in target_links:
            page.goto(url, wait_until="domcontentloaded")
            # 等待企业信息块加载完成,超时时间设10秒
            page.wait_for_selector(".company-info-panel", timeout=10000)
            # 按页面实际选择器提取对应字段
            item = {
                "orgnr": page.locator("xpath=//*[contains(text(),'Organisationsnummer')]/following-sibling::span").inner_text().strip(),
                "företagsnamn": page.locator("xpath=//*[contains(text(),'Företagsnamn')]/following-sibling::span").inner_text().strip(),
                "säte": page.locator("xpath=//*[contains(text(),'Säte')]/following-sibling::span").inner_text().strip()
            }
            result.append(item)
            # 随机间隔1-2秒,避免触发反爬
            time.sleep(random.uniform(1,2))
        browser.close()
    
    # 结果存为本地JSON文件
    with open("company_data.json", "w", encoding="utf-8") as f:
        json.dump(result, f, ensure_ascii=False, indent=2)
    
  • 如果坚持用Selenium,不要手动配Firefox驱动,直接换Chrome组合,用webdriver-manager自动管理驱动版本,安装命令pip install selenium webdriver-manager,启动代码如下,不会出现启动失败问题:
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
    

注意:爬取过程中控制请求频率,不要短时间发大量请求,避免被站点限制访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:57:16