一个爬虫框架需要具备哪些功能?
首先web框架需要具备哪些功能。Flask,Django有模板类,Request类,Response类等,但其实最核心的是他们的路由(route)功能:即url到视图函数的映射规则。
其次爬虫框架需要具备哪些功能。Scrapy,pyspider有http请求库,html解析工具,数据库存储等,但其实最核心的是他们的调度(scheduler)程序:即如何让你的请求,解析,存储协同工作。
所以一个最小的爬虫框架只需要一套调度程序就可以了,其他的请求,解析,存储都可以作为框架的扩展来使用,比如:gaoxinge/spidery。另外既然一个最小的爬虫框架只有一套调度程序,那么它也可以用来做非爬虫的工作。
一个爬虫的例子# -*- coding: utf-8 -*-"""url: https://stackoverflow.com/questionsfetch: requestsparse: lxmlpresist: txt"""import requestsfrom lxml import etreefrom spidery import Spiderspider = Spider( urls = ,)@spider.fetchdef fetch(url): response = requests.get(url) return response@spider.parsedef parse(response): root = etree.HTML(response.text) results = root.xpath(\u0026#39;//div\u0026#39;) for result in results: question = {} question = result.xpath(\u0026#39;div//strong/text()\u0026#39;) question = result.xpath(\u0026#39;div//strong/text()\u0026#39;) question = result.xpath(\u0026#39;div/div/text()\u0026#39;).strip() question = result.xpath(\u0026#39;div/h3/a/text()\u0026#39;) question = result.xpath(\u0026#39;div/h3/a/@href\u0026#39;) yield question, None@spider.presistdef presist(item): f.write(str(item) + \u0026#39;\\u0026#39;)f = open(\u0026#39;stackoverflow.txt\u0026#39;, \u0026#39;wb\u0026#39;)spider.consume_all()f.close()但是为什么一般的爬虫框架都要有自己的http请求库呢?这是因为你很难实现一套调度程序,而不考虑发送请求的方式,尤其是异步的情形。比如,虽然gaoxinge/spidery实现一套调度程序,但是在使用它的时候,不建议使用异步的请求(twisted,tornado等)。
■网友
看这两张图应该就清楚了
【一个爬虫框架需要具备哪些功能?】 
推荐阅读
- 同比■同比增长7.1%!2021年的第一个节你花了多少钱?
- “他是我第一个会说普通话的老师”:一对师生折射青海山村蝶变
- 有必要重新开个C店吗
- 大学再有三个月就结束了,没学到知识,参加一个软件测试培训机构好吗
- 汽车|长安UNI-K又将开创一个新的"引力"纪元?
- 神话|武汉传奇父亲:一个平行班孩子创造的高考神话(感动上万家长)
- 王者荣耀李白能不能出肉
- 直播会成为品牌传播的另一个途径么有哪些可行的方法感觉有戏又没头绪好捉急。
- 怎样成为一名合格的Python程序员?
- 知乎有没有必要增加一个特别关注功能
