为了账号安全,请及时绑定邮箱和手机立即绑定

解析器HtmlParser的一个问题,急!

请问解析器里面的new_urls = set()和res_data = dict()如果放在__init__构造函数里面为什么不行?我尝试过,new_urls不影响,但是res_data放在构造函数里面,最终解析出的title和summary是重复的,打印Outputer里面的datas数据,每次的值一样,而且是重复的,如craw 2重复两组一样的,craw 3重复三组一样的,见图

在线等,急死我了,困扰我一周了!!!!!!!!!!

http://img1.sycdn.imooc.com//5704e64f00011db407640719.jpg

http://img1.sycdn.imooc.com//5704e66b0001c0a805970248.jpghttp://img1.sycdn.imooc.com//5704de1400017dfc13170681.jpg

正在回答

2 回答

放函数和放构造函数里的区别是什么?变量的变化有什么区别?关键就是弄清楚这个问题吧

0 回复 有任何疑惑可以回复我~

由于项目我还没有理清楚,所以也答不了。

不过,对这个现象,我说个可能。

老师项目里 new_urls是集合,res_data是词典,你好像两个都是集合类型,不知道有没有可不可以。

你把这两个变量都放到构造函数里的结果就是,这两个变量成为全局变量(可能不叫全局变量),结果就是,每调用一次_get_new_data() 函数,res_data都会累积所有已经爬到的网页。

我也搞糊涂了,大概就这个区别吧,你再理理

0 回复 有任何疑惑可以回复我~
#1

phoenixor 提问者

一个是set(),一个是dict()啊,不是写得很明白吗
2016-04-06 回复 有任何疑惑可以回复我~
#2

神经旷野舞者 回复 phoenixor 提问者

dic{}吧
2016-04-06 回复 有任何疑惑可以回复我~
#3

phoenixor 提问者 回复 神经旷野舞者

字典只能定义成{ }吗?那为什么放在函数里面就是对的
2016-04-06 回复 有任何疑惑可以回复我~
#4

神经旷野舞者 回复 phoenixor 提问者

不太清楚,语法忘了,你查查
2016-04-07 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消
Python开发简单爬虫
  • 参与学习       227670    人
  • 解答问题       1219    个

本教程带您解开python爬虫这门神奇技术的面纱

进入课程

解析器HtmlParser的一个问题,急!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信