数据知道
IT技术博主,博主会持续更新专栏文章,欢迎关注和订阅文章博客,欢迎私信和博主交流技术。如有需要请站内私信或者联系VX名片(ID:data_know)
展开
-
scrapy源码2:scheduler的源码分析
一. scheduler核心Scheduler主要负责scrapy请求队列的管理,即进队与出队。进一步来说,会涉及到队列的选择,队列去重,序列化。from_crawler(cls, crawler): settings = crawler.settings dupefilter_cls = load_object(settings['DUPEFILTER_CLASS']) dupefilter = dupefilter_cls.from_settings(原创 2020-07-02 20:54:33 · 32285 阅读 · 0 评论 -
scrapy源码1:engine的源码分析
scrapy中engine.py的源码分析如下:"""engine.py提供了2个类:Slot和ExecutionEngine Slot: 提供了几个方法添加请求,删除请求,关闭自己,触发关闭方法 它使用Twisted的主循环reactor来不断的调度执行Engine的"_next_request"方法,这个方法也是核心循环方法。 ExecutionEngine: 引擎的执行任务爬虫引擎是控制调度器,下载器和爬虫的。This is the Scrapy eng原创 2020-06-30 13:02:17 · 42785 阅读 · 0 评论 -
scrapy源码9 - downloadermiddleware
下载中间件import six导入six兼容包from twisted.internet import defer导入deferfrom scrapy.http import Request, Response导入请求和响应from scrapy.middleware import MiddlewareManagerfrom scrapy.utils.defer import mustbe_deferred导入中间件管理 和mustbe_defferredfrom scrapy.uti原创 2020-11-30 14:03:58 · 28289 阅读 · 0 评论 -
scrapy源码9 - webclient
webclient.py 这个文件从名字上看出来应该是定义一个web 客户端的类。from time import time导入时间from six.moves.urllib.parse import urlparse, urlunparse, urldefrag导入urlparse,urlunparse,urldefragfrom twisted.web.client import HTTPClientFactory导入HTTPClientFactoryfrom twisted.web原创 2021-01-31 23:50:30 · 28335 阅读 · 0 评论 -
scrapy源码3:scraper的源码分析
我们看看scraper.py文件吧。从注释中我们可以看出这个scraper模块是实现爬虫组件去解析响应流并且提取数据的。import loggingfrom collections import deque# 这2个就是日志的deque队列的导入。from twisted.python.failure import Failurefrom twisted.internet import defer# 这2句,导入了一个Failure和一个defer延迟。from scrapy.util原创 2020-08-31 09:50:04 · 29880 阅读 · 0 评论 -
scrapy源码4:spidermw的源码分析
import sixfrom twisted.python.failure import Failure# 导入six包和导入failurefrom scrapy.middleware import MiddlewareManager# 这里导入了一个中间件管理的基类,应该适用于后续的继承的吧。 from scrapy.utils.defer import mustbe_deferredfrom scrapy.utils.conf import build_component_list#.原创 2020-08-31 12:45:19 · 29522 阅读 · 0 评论 -
scrapy源码7:downloader的源码分析
这里我们看看scrapy.core.downloader 这个吧。from __future__ import absolute_import# 在python2.5,你可以打开 import的行为直接去绝对导入使用一个 from __future__ import absolute_import 。这个绝对导入行为将成为一个默认的细节在将来的python中。一旦绝对导入被默认,import string 将总是寻找基本库。# 建议用户尽可能多的使用绝对导入,因此在你的代码中使用from pkg im原创 2020-09-01 10:03:16 · 29606 阅读 · 0 评论 -
scrapy源码8 - contextfactory
contextfactory.py 这个文件,相对文件内容不多。from OpenSSL import SSLfrom twisted.internet.ssl import ClientContextFactoryfrom scrapy import twisted_version这3句代码, 导入ssl,导入ClientContextFactory ,导入twisted_version我们看看这个version是啥内容twisted_version = (_txv.major, _t原创 2020-10-13 20:10:01 · 28468 阅读 · 0 评论 -
scrapy源码5:middleware的源码分析
这个文件是中间件的基类了。from collections import defaultdictimport loggingimport pprint# 这几个都是引用默认字典, 日志, 打印的,没啥问题。 from scrapy.exceptions import NotConfiguredfrom scrapy.utils.misc import load_object# 导入了notconfigure没有配置的异常, 导入了load_object去完成字符串到对应类对象的方法。前面原创 2020-08-31 13:03:33 · 29460 阅读 · 0 评论 -
scrapy源码6:deffer和parallel的源码分析
deferscrapy的核心的代码大量用到deffer对象,还有一些并行的东西。 这里简单去学习下deffer和并行的方法知识 。twisted.interet.defer 这个官方的api就是下面的网址了。http://twistedmatrix.com/documents/current/api/twisted.internet.defer.html我们可以看到这个defer是twisted提供的internet方法的包twisted先了解下twisted是个什么。Twisted: The原创 2020-08-31 19:24:35 · 29773 阅读 · 0 评论 -
scrapy源码9 - tls
tls.py 这个文件看起来挺简单的。import loggingfrom OpenSSL import SSLfrom scrapy import twisted_versionlogger = logging.getLogger(__name__)这里就是导入logging,ssl,twisted_version 包。全局日志loggerMETHOD_SSLv3 = 'SSLv3'METHOD_TLS = 'TLS'METHOD_TLSv10 = 'TLSv1.0'ME原创 2021-01-31 15:41:47 · 28599 阅读 · 1 评论