Python中spynner浏览器闪退是什么情况?如何解决?

我的是 win7,64 位,安装 python2.7,32 位.
顺利安装了 pyqt4,正常使用,没有什么异常.
安装 spynner,也很顺利.
但是,就是 spynner 会自动闪退.代码不关闭浏览器,就自动关闭.
其他都正常使用.
请问闪退是什么情况呢?
怎么解决?


Python中spynner浏览器闪退是什么情况?如何解决?
2 回复

spynner这玩意儿是基于QtWebKit的老古董了,现在环境兼容性很差。闪退最常见的就是Qt库版本冲突或者缺失依赖。

直接上解决方案:

import spynner
import sys

def create_stable_browser():
    try:
        # 关键:设置这些参数能提高稳定性
        browser = spynner.Browser(
            debug_level=spynner.DEBUG,  # 开启调试看具体报错
            load_images=False,          # 不加载图片减少崩溃
            user_agent="Mozilla/5.0",   # 设置标准UA
            plugins_enabled=False       # 禁用插件
        )
        
        # 设置超时避免卡死
        browser.load_timeout = 30
        browser.create_webview()
        
        # 尝试加载一个简单页面测试
        browser.load("http://httpbin.org/html")
        browser.wait_load()
        
        print("浏览器创建成功")
        return browser
        
    except Exception as e:
        print(f"创建失败: {type(e).__name__}: {e}")
        return None

# 使用示例
if __name__ == "__main__":
    browser = create_stable_browser()
    if browser:
        # 你的操作代码
        html = browser.html
        print("页面长度:", len(html))
        browser.close()

如果还闪退,试试这些:

  1. 降级PyQtpip install PyQt5==5.12PyQt4==4.11
  2. 换用dryscrape(类似但更稳定):
import dryscrape
dryscrape.start_xvfb()
session = dryscrape.Session()
session.visit("http://example.com")
  1. 终极方案:别用spynner了,现在都用playwrightselenium,稳定得多:
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("http://example.com")
    content = page.content()
    browser.close()

spynner这库2016年就停止维护了,现在用就是自找麻烦。真要解决闪退,不如直接换现代工具。

建议直接换playwright或selenium。


没用过 spynner ,抓取动态页面可以尝试下 selenium

回到顶部