apider_man_uml修正版
2018-07-20 12:26:53 29 举报
爬虫类图
作者其他创作
大纲/内容
通过用户命令选择相应的配置,并实例化一个全局的config实例方便整个项目调用
DataBasePipeline
具体配置类
根据需要重写父类的属性
继承
spider_base
MonitorMiddleware
传输数据
RabbitMQMixin类
+ rabbitmq_key:dict = None+ rabbitmq_batch_size:integer = None+ server:String = None
+ start_requests+ setup_rabbitmq(crawler)+ next_requests+ make_request_from_data(data):Request+ make_requests_from_url:Request+ schedule_next_request+ spider_idle:DontCloseSpider
生成
RabbitMQCrawlSpider
scrapy engine将格式化后的数据(对象)传递到Item,item者负责校验,通过后生成item对象传递给Pipline
UserAgentMiddleware
ProxyMiddleware
具体的item有:answer,dianping,news,post,comment等,根据不同的业务要求,添加相应的属性,类似于数据库初始化字段
Request
+ encoding:String='utf-8'+ method:String='GET'+ url:String+ body:binary+ callback:function+ errback:function+ cookies:Dict+ headers:Dict+ dont_filter:blooean=False+ _meta:Dict+ flags
+ meta:Dict(meta)+ get_url:String(url)+ _set_url(url)+ _get_body:binary+ _set_body(body)+ encoding:String+ __str__:String+ copy+ replace:class
定向爬虫有:APP,论坛,知乎,自媒体等爬虫
具体的Item实现类
RabbitMQSpider爬虫类
中间件负责集中处理Rquest请求:如ip代理,加载cookie,日志监控和useragent
定向爬虫类
+ name:String = 唯一且不为空+ default_page_num:integer = 10+ default_page_size:integer = 25+ profile_api_url:String+ custom_settings:dict
+ make_request_from_data(task):Dict(requests)+ parse(response)
BaseCrawlSpider
这里主要负责记录产生任务数量和完成任务数量,需要连接redis服务保存这些数据
CounterMiddleware
increment(引入方法)
BaseSpider
经过
各爬虫格式化
下载器
下载器指scrapy下载器,负责请求网络数据,然后将数据交给scrapy engine,后者将数据格式化
BaseConfig
+ RPC连接数据+ DATABASE_HOST+ DATABASE_SEARCH_ENGINE_HOST+ RabbitMQ的连接数据+ RabbitMQ Search Engine连接数据+LOG_LEVEL:String=\"INFO\"+ ACCOUNTS:Dict = {}+ EDATA_SEARCH_API:String+ EDATA_SEARCH_SEARCH_ENGINE_API:String+ REDIS_SEARCH_ENGINE_EXEC:String+ SENTRY_URL:String+ 神箭手配置数据+ 阿布云配置数据
这里为数据的出口,数据在这里被交给业务端处理
scrapy_rabbitmq
BaseMixin
+ retry_times:integer = 10+ is_login_spider:boolean = False
BaseItem
+ 平台唯一ID uuid+ 类型 type+ 标题 title+ 访问 URL url + 内容 content + 发布时间 pubTime+ 抓取时间 fetchTime + 采集源信息 origin+ 情感(数据回填需要) emotion+ 内核类 kernelSentences
BasePipeline
CommonNewsScannerSpider
+ name:String+ custom_settings:Dict+ rules_arr:Array+ rules:Array
各爬虫将数据解析为对象,交给Item类校验
Spider(Scrapy)
+ name:string = None+ custom_settings:dict = None
+ logger+ log+ from_crawler+ set_crawler+ _set_crawler+ start_requests+ make_requests_from_url+ update_settings+ hanles_request
这里实现获取ip代理池,动态设置代理的功能,需要连接业务端rpc接口
CrawlSpider
+ rules:tuple
常用的配置有dev,beta,prod
CookieMiddleware
业务实现
RabbitMQPipeline
中间件
收藏
收藏
0 条评论
回复 删除
下一页