zoukankan      html  css  js  c++  java
  • python BeautifulSoup 爬虫运行出现 exited with code -1073741571

    首先,exited with code -1073741571意思是栈溢出。具体可以看https://blog.csdn.net/vblittleboy/article/details/6613815

    它的前一个错误是程序递归深度过深。

    但我没有在函数里用递归?

    python认为你进入一个函数就进入更深一层的递归。

    import sys#出现递归深度太深的问题?
    sys.setrecursionlimit(100000000)#把递归深度设深点。

    可以解决,

    但又出现栈溢出。在隔行输出调试法下我发现是<class 'bs4.element.Tag'>类型强制转换str处退出的程序。也就是说,它导致了栈溢出。

    soup = BeautifulSoup(html, 'html.parser')
    pbiaoqian = soup.find('p')
    print(str(pbiaoqian))#有问题?

    在这个错误之前,有一个问题,就是一个htm页面有很多<p>标签,但BeautifulSoup只要找一个就全在里面了。

    之前用

    for pbiaoqian in soup.find_all('p'):
        #prind(pbiaoqian.get_text())#调用方法
        #print(str(pbiaoqian))#或者直接转换打印
        print(pbiaoqian)#这样也能显示

    它输出的结果是find到的第一个<p>标签,从头输出到尾。第二个输出,find到的第二个<p>标签开始,到尾。......最后一个<p>标签。

    言归正传。

    我推测,栈溢出是因为调用强制类型转换程序次数过多导致的,或者pbiaoqian里内容过多类型转换处理不了。

    那么,解决方法就是:

    1.报什么错从哪里解决。

      但windows修改栈空间大小要在编译器里修改,因为它是由编译器自动管理的。但F:PyCharm Community Edition 2018.2.4inpycharm.exe.vmoptions里尽是看不懂的参数,前2个好像还是系统给编译器分配的内存设置。

      File->settings瞎点了半天,也没有找到Stack有关的单词。

    2.让str的强制类型转换能一次转更多。

      如果能像设置递归深度一样设置栈空间大小就好了,

    threading.stack_size(200000000)

      不过用起来好像没什么效果,还是老样子。

    3.或者让BeautifulSoup一次不find那么多,或者把find到的拆分成许多块。

      str拆分还能百度到方法,BeautifulSoup文档里给它4个变量的介绍少得可怜,也没有百度到。

    思考一天未果。

    也许你有同样困扰,也许你能给我答案,可以在下面评论。

  • 相关阅读:
    Windows Store App 全球化 资源匹配规则
    Windows Store App 全球化 设置指定页面的语言
    Windows Store App 全球化:应用中设置语言选项
    Windows Store App 全球化:运行时响应语言变更
    Windows Store App 全球化:引用类库资源
    Windows Store App 全球化:引用分离资源文件中的资源
    Windows Store App 全球化:在后台代码中引用字符串资源
    Windows Store App 全球化:在XAML元素中引用文件资源
    Windows Store App 全球化:在XAML元素中引用字符串资源
    Windows Store App 变形特效
  • 原文地址:https://www.cnblogs.com/Zf451452043/p/10129943.html
Copyright © 2011-2022 走看看