python 关于函数递归调用自己
爬取b站博人传
每页短评20个,页数超过1000页,
代码如下
import requests
import json
import csv
def main(start_url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36',}
res = requests.get(url=start_url,headers=headers).content.decode()
data = json.loads(res)
try:
data = data['result']['list']
except:
print('-----------')
cursor = re.findall('"cursor":"(\d+)",',res) for i in data:
mid = i['author']['mid']
uname = i['author']['uname']
content = i['content']
content= content.strip()
try:
last_index_show = i['user_season']['last_index_show']
except:
last_index_show = None print(mid,uname,content,last_index_show)
print('------------------------') with open('borenzhuan_duanping.csv', 'a', newline='',encoding='utf-8')as f:
writer = csv.writer(f)
writer.writerow([mid,uname,content,last_index_show]) if cursor:
next_url = 'https://bangumi.bilibili.com/review/web_api/short/list?media_id={}&folded=0&page_size=20&sort=0&sort=0&cursor='.format(id) + cursor[0]
main(next_url)
else:
print('抓取完成') if __name__ == '__main__': zhuye_url = 'https://www.bilibili.com/bangumi/media/md5978/'
id = re.findall('md(\d+)', zhuye_url)[0]
start_url = 'https://bangumi.bilibili.com/review/web_api/short/list?media_id={}&folded=0&page_size=20&sort=0&cursor='.format(id) main(start_url)
在爬取过程中发现,每当递归到999会发生异常
RecursionError: maximum recursion depth exceeded in comparison
这个函数在递归自身是发生的异常
只需要在程序开头添加
import sys
sys.setrecursionlimit(100000)
防止内存爆炸
python 关于函数递归调用自己的更多相关文章
- Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
- python之函数递归
函数递归调用 在函数内部,可以调用其它函数,如果一个函数在内部调用自身,即是递归调用 为防止无限递归类似于死循环,需要如下: 1.必须要有一个明确的返回值: 2.每次进入更深一层递归时,问题规模应该比 ...
- day14函数递归调用
day14函数递归调用 1.装饰器叠加 def deco1(func1): def wrapper1(*args,**kwargs): print('=====>wrapper1 ') res1 ...
- Python函数递归调用
函数的递归调用: 是函数嵌套调用的一种特殊形式 具体是指: 在调用一个函数的过程中又直接或间接地调用到了本身 # 直接调用本身 def func(): print('我是func') func() f ...
- python手动设置递归调用深度
python超出递归深度时会出现异常: RuntimeError: maximum recursion depth exceeded python默认的递归深度是很有限的,大概是900当递归深度超过这 ...
- (十七)python 3 函数递归
递归函数 即自己调用自己,递归中可以函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件 优点:使用递归时,常常可以让代码更加简洁 缺点:递归会占用比较多的内存,当递归次数比较多时,性能 ...
- python生成器,递归调用
生成器 什么是生成器:只要在函数体内出现yield关键字,那么再执行函数就不会执行函数代码,会得到一个结果,该结果就是生成器 生成器就是迭代器 yield的功能 yield为我们提供了一种自定义迭代器 ...
- gcc O2优化选项对内嵌汇编以及函数递归调用的影响
学习和使用c这些年来,很多方面都未深入研究过,就如脱离了IDE后,我可能连编译一个c文件的命令都写不出来. 最近需要在c中内嵌汇编解决问题,参考网上相关的资料写了一段汇编代码,在测试的时候时好时坏,找 ...
- python基础-函数递归
函数递归 概念:直接或间接地重复调用函数本身,是一种函数嵌套调用的表现形式. 直接调用:在函数内部,直接调用函数本身 def foo(): print("这是foo函数") foo ...
随机推荐
- 69)PHP,cookie的有效域
(1)默认情况下,cookie只在当前域下有效,比如我的loclhost/PHP或者shop.wang.com下有效. (2)其实一个域就代表一个网站, 以及域名就比如:www.baidu.com ...
- spring mvc 设置@Scope("prototype")
spring中bean的scope属性,有如下5种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例 prototype表示每次获得be ...
- 用C#实现一个百度万年历
目录 背景 实现步骤 关键点 结束语 背景 命理学是对人生命运规律的探索,以人的各式各样的数字(出生年月日.姓名笔划等)来推测人的性格与命运并占卜推测未来会发生的事情.古今中外都有相关方面的理论,中国 ...
- prisoners-of-war|
The Nazi kept those ________ in their concentration camps. A. prisoner-of-wars B. prisoner-of-war ...
- ArrayList查找和添加元素问题
问题描述: 如上图所示,如果依靠迭代器在List中查找元素并添加元素,会报错:java.util.ConcurrentModificationException原因是在添加元素后,List本身发生了变 ...
- [PyTorch入门之60分钟入门闪击战]之自动推倒
AUTOGRAD: AUTOMATIC DIFFERENTIATION(自动分化) 来源于这里. autograd包是PyTorch中所有神经网络的核心.首先我们先简单地了解下它,然后我们将训练我们的 ...
- ArrayList与LinkList对比
本文简要总结一下java中ArrayList与LinkedList的区别,这在面试中也是常常会问到的一个知识点. 先来看一下ArrayList和LinkedList的关系是怎样的: 从继承体系可以看到 ...
- 一个异步访问redis的内存问题
| 分类 redis | 遇到一个redis实例突然内存飙高的案例, 具体症状如下: 客户端使用异步访问模式 单个请求的回包很大,hgetall一个8M的key 由于访问量比较大,已经登录不上red ...
- ResultMap和ResultType到底有什么区别?
转载请标明出处:https://www.cnblogs.com/Dreamice/ 首先,SQL语句执行后返回的结果可以使用 Map 存储,也可以使用 POJO 存储. 一.使用Map存储结果集 下面 ...
- CPU踩点图
CPU占比探测用js来检查当前系统cpu的占用比例,通过 setTimeout 的方式探测 CPU 的大小,这样可以实现网页游戏中动画等耗时操作的自动调节.这个原理是很多人都知道的,就是用JS来踩点. ...