随笔分类 -  Scrapy框架学习

摘要:scrapy初级 起始url parse 选择器 pipeline requests POST cookie Headers scrapy进阶 去重 调度器(队列) 中间件 扩展(基于信号) https 代理(基于中间件) scrapy高级 miniscrapy模拟scrapy流程 阅读全文
posted @ 2020-07-28 16:21 Norni 阅读(168) 评论(0) 推荐(0) 编辑
摘要:基本使用 from twisted.web.client import getPage, defer from twisted.internet import reactor # 基本使用 def all_done(contents): # 所有爬虫执行完毕后,循环终止 reactor.stop() 阅读全文
posted @ 2020-07-28 16:17 Norni 阅读(135) 评论(0) 推荐(0) 编辑
摘要:创建命令目录及文件 settings.py中定义命令 代码 from scrapy.commands import ScrapyCommand​​class Command(ScrapyCommand): requires_project = True​ def syntax(self): retu 阅读全文
posted @ 2020-07-27 21:56 Norni 阅读(192) 评论(0) 推荐(0) 编辑
摘要:在settings.py中,虽然没有明确写出来去重方式,但是默认为以下内容 DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter' DUPEFILTER_CLASS = False JOBDIR = "保存范文记录的日志路径,如:/root/" # 阅读全文
posted @ 2020-07-25 16:14 Norni 阅读(360) 评论(0) 推荐(0) 编辑
摘要:import scrapyclass BaiduSpider(scrapy.Spider): name = 'baidu' allowed_domains = ['www.baidu.com'] start_urls = ['http://www.baidu.com/'] def parse(sel 阅读全文
posted @ 2020-07-25 15:09 Norni 阅读(1175) 评论(0) 推荐(0) 编辑
摘要:Scrapy提供扩展(扩展是正常的python类,它们会在Scrapy启动时被实例化、初始化)机制,让人能将自定义功能绑定到Scrapy中。 1、Scrapy中的内置扩展设置EXTENSIONS_BASE 扩展在扩展类被实例化时加载和激活,实例化代码必须在类的构造函数(__init__)中执行。 ( 阅读全文
posted @ 2020-06-17 20:56 Norni 阅读(675) 评论(0) 推荐(0) 编辑
摘要:Spider中间件可以用来处理发送给Spider的Response及Spider产生的Item和Request。 1、Scrapy内置的SPIDER_MIDDLEWARES_BASE (1)'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware 阅读全文
posted @ 2020-06-17 15:19 Norni 阅读(442) 评论(0) 推荐(1) 编辑
摘要:1、DOWNLOAD_DELAY 在settings中设置 DOWNLOAD_DELAY=2 #延时2秒,不能动态改变,导致访问延时都差不多,也容易被发现 2、RANDOMIZE_DOWNLOAD_DELAY 在settings中设置 RANDOMIZE_DOWNLOAD_DELAY=True # 阅读全文
posted @ 2020-06-17 14:10 Norni 阅读(6168) 评论(0) 推荐(2) 编辑
摘要:1、Request对象 一个Request对象代表着一个HTTP请求,通常在Spider类中产生,然后传递给下载器,最后返回一个响应。 类原型:class scrapy.http.Request( url(string), # 请求的连接 callback(callable), #指定用于解析请求响 阅读全文
posted @ 2020-06-17 12:58 Norni 阅读(261) 评论(0) 推荐(0) 编辑
摘要:Scrapy在Twisted异步网络库上构建,所以如果程序必须在Twisted reactor里运行 1、方式一:使用CrawlerProcess类 CrawlerProcess类(scrapy.crawler.CrawlerProcess)内部将会开启Twisted reactor、配置log和设 阅读全文
posted @ 2020-06-17 11:29 Norni 阅读(515) 评论(0) 推荐(0) 编辑
摘要:scrapy为下载的item中包含的文件提供了一个可重用的item pipeline(scrapy.pipelines.media.MediaPipeline),这些Pipeline有些共同的方法和结构。 MediaPipeline共同实现了以下特性: (1)避免重新下载最近已经下载过的数据 (2) 阅读全文
posted @ 2020-06-16 19:24 Norni 阅读(755) 评论(0) 推荐(0) 编辑
摘要:Scrapy提供了两种类型的命令:一种必须在scrapy项目中运行,为针对项目的命令,另外一种则属于全局命令。 1、全局命令 (1)startproject命令 语法:scrapy startproject <project_name> 作用:用于创建名为project_name的scrapy项目 阅读全文
posted @ 2020-06-16 15:05 Norni 阅读(221) 评论(0) 推荐(0) 编辑
摘要:1、Scrapy_redis的基础概念 2、Scrapy_redis的流程 3、复习redis的使用 4、Scrapy_redis的使用 1、 Scrapy_redis的基础概念 scrapy_redis:基于redis的组件的爬虫 github地址:https://github.com/rmax/ 阅读全文
posted @ 2020-05-24 00:19 Norni 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2020-05-23 17:54 Norni 阅读(323) 评论(0) 推荐(0) 编辑
摘要:当LOG_LEVEL="DEBUG"等级时,运行爬虫会出现一些信息 阅读全文
posted @ 2020-05-22 15:33 Norni 阅读(257) 评论(0) 推荐(0) 编辑
摘要:在items.py文件中,scrapy.Item是一个BaseItem,为parse函数中能够yield的对象之一。 ``` class MyspiderItem(scrapy.Item): # scrapy.Item是一个字典 name = scrapy.Field() # scrapy.Fiel 阅读全文
posted @ 2020-05-22 11:05 Norni 阅读(351) 评论(0) 推荐(0) 编辑
摘要:scrapy.Request能构建一个requests,同时指定提取数据的callback函数 ``` next_page_url = '...' while 判断条件,结束递归: yield scrapy.Request(next_page_url,callback=self.parse) ``` 阅读全文
posted @ 2020-05-22 10:44 Norni 阅读(653) 评论(0) 推荐(0) 编辑
摘要:Scrapy设置(settings)提供了定制Scrapy组件的方法,可以控制包括核心(core),插件(extension),pipeline以及spider组件。 官方文档:https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.h 阅读全文
posted @ 2020-05-12 16:33 Norni 阅读(156) 评论(0) 推荐(0) 编辑
摘要:1、通常防止爬虫被反主要有以下几个策略 (1)动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息) (2)禁用Cookies(即不启用cookies middleware,不向Server发送cookies,有些网站通过cookie的使用发现爬虫行为)(通过COOK 阅读全文
posted @ 2020-05-12 16:06 Norni 阅读(733) 评论(0) 推荐(0) 编辑
摘要:使用FormRequest.from_response()方法模拟用户登录 官方参考文档:https://docs.pythontab.com/scrapy/scrapy0.24/topics/request-response.html#topics-request-response-ref-req 阅读全文
posted @ 2020-05-12 14:22 Norni 阅读(286) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示