请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

parse函数调用另一个函数,只能通过callback吗?

问题:爬取百度百科的电影,发现有的电影名称存在多义词,例如下:
图片描述

在parse函数中,
1.如果是这种情况,要再yield Request爬取电影信息;
2. 否则就可以直接解析了。
我希望解析的逻辑封装在一个函数中进行复用,但是发现2的情况,解析函数没被调用。
我目前的解决方式,是也再yield 一次Request, 通过callback函数调用,但是这样比较浪费。
代码如下:
图片描述

老师,这个问题如何优化解决呢?

正在回答 回答被采纳积分+3

1回答

bobby 2020-02-13 12:23:43

调用另一个函数当然随时可以,这里的callback是指要发起网络请求之后的回调 如果不是要网络请求就直接调用 不然就要用callback

0 回复 有任何疑惑可以回复我~
  • 提问者 慕尼黑7546459 #1
    但是我这里,在parse函数中通过self.parse_detail(response)调用的话,为啥没进parse_detail方法啊?老师帮忙看戏代码哪里写的有问题?
    
    执行parse函数之后,直接就结束了。
    回复 有任何疑惑可以回复我~ 2020-02-13 17:36:42
  • bobby 回复 提问者 慕尼黑7546459 #2
    意思就是说你这里不需要下载url?你这样调用就是把parse中的response交给parse_detail去使用?
    回复 有任何疑惑可以回复我~ 2020-02-15 12:53:38
  • 提问者 慕尼黑7546459 回复 bobby #3
    是的。对于不是多义词的那些电影,在进parse函数,已经通过start_urls去下载过了,只需要直接调用parse_detail函数解析就可以了。
    
    现在的问题是,parse函数中通过self.parse_detail(response) 调,发现没进parse_detail方法。
    回复 有任何疑惑可以回复我~ 2020-02-16 23:13:32
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信