请稍等 ...
×

采纳答案成功!

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

关於spider的观念问题

老师好,我是初学者,针对"抓取过程"的部分,我看了三次感觉还是一知半解,想请以下的理解正确吗?

一丶
spiderscrapy.Request的功能连用,可视为一个递回(Recursion)的方法,透过不断的将新的URL传递出去,并再次调用spider类来进行相对应的parse

二丶
scrapy.Request的主要用途是让爬取的过程可以实现异步的效果

三丶
每一组Requestparse的搭配,可视为一个业务逻辑,针对不同的URL类别(或组别,如标题丶图片等等),客制化一套处理方法,再将parse方法从callback参数中传进去,让该次业务逻辑调用某一套客制化的parse

希望老师能协助补全一下知识,感谢您

正在回答

1回答

是的,大致思路没问题,接下来就是为什么一个应该很顺利的过程,在scrapy中会显得如何不方便,主要原因都是在于异步,scrapy是一个异步框架,所以基本上回调只能由scrapy来处理,不过scrapy已经将这里的回调隐藏了,所以我们只需要写解析规则和是否要进一步抓取就行了,如果从这个页面中解析到更多需要进一步抓取的直接yield request就行了,如这个html中解析到结果了需要存库,直接yield item就行了,这两种不同的类型在scrapy的engine接收到以后自然就知道应该是交给pipeline去处理还是交给downloader去处理

1 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕仙7241916 #1
    谢谢老师的回答,但我不太明白这段话的意思:
    【scrapy是一个异步框架,所以基本上回调只能由scrapy来处理,不过scrapy已经将这里的回调隐藏了,所以我们只需要写解析规则和是否要进一步抓取就行了】 
    
    想请问异步框架与回调只能交给scrapy的关系是甚么呢? 意思是我们选用了这个框架,就无法自定义callback的方式吗?
    
    另外是engine、pipeline与downloader我目前还不太理解,后续的课程会教对吗?
    回复 有任何疑惑可以回复我~ 2023-02-07 23:31:19
  • bobby 回复 提问者 weixin_慕仙7241916 #2
    callback回调函数scrapy已经给我们了, 也就是如果进行异步调用scrapy给我们做了,一般我们不要去定制,主要是因为门槛高,当然有能力熟悉scrapy的源码后也有能力修改的, 课程中有pipeline和downloader的整体架构的,但是没有讲解downloader源码,因为异步的核心就在downloader中,所以门槛较高,不建议看这个,懂了scrapy以后再去看这个源码比较好
    回复 有任何疑惑可以回复我~ 2023-02-08 10:12:29
  • 提问者 weixin_慕仙7241916 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2023-02-08 10:48:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信