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个变量的介绍少得可怜,也没有百度到。

    思考一天未果。

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

  • 相关阅读:
    Python正则表达式如何正确运用?七大案例详解
    Python爬虫的谷歌Chrome F12如何抓包分析?案例详解
    Python的Cookie如何正确操作运用呢?案例详解
    八大Python爬虫技巧,你会几个?
    Python爬虫解析神器-正则表达式如何正确运用?案例详解
    Python爬虫之Selector的基本用法正确运用方法,案例详解
    Python爬虫是如何遍历文档树呢?一招教你
    Python之Selenium如何正确运用?案例详解
    Python中的单例模式如何正确运用?本文详解
    JAVA-Spring 整合 JDBC
  • 原文地址:https://www.cnblogs.com/Zf451452043/p/10129943.html
Copyright © 2011-2022 走看看