python BeautifulSoup 爬虫运行出现 exited with code -1073741571

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

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

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

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

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

能够解决,spa

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

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

在这个错误以前,有一个问题,就是一个htm页面有不少<p>标签,但BeautifulSoup只要找一个就全在里面了。调试

以前用code

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

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

言归正传。blog

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

那么,解决方法就是:

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

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

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

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

  若是能像设置递归深度同样设置栈空间大小就行了,

threading.stack_size(200000000)

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

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

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

思考一天未果。

也许你有一样困扰,也许你能给我答案,能够在下面评论。

原文出处:https://www.cnblogs.com/Zf451452043/p/10129943.html

相关文章
相关标签/搜索