python爬虫之Scrapy介绍三——文档介绍

1 Scrapy log信息的认知

[ scrapy.utils.log] INFO: Overridden settings:自己设置的setting的信息
[ scrapy . middleware] INFO: Enabled extensions :启动的扩展,默认有一堆
[scrapy . middleware] INFO: Enabled downloader middlewares:启动的下载中间价,默认一堆
[ scrapy .middleware] INFO: Enabled spider middlewares:启动的爬虫中间件,默认一堆
[ scrapy . middLeware] INFO: EnabLed item pipelines: 启动的管道
[scrapy. extensions . telnet] DEBUG: 爬虫运行的时候能够使用talent命令对爬虫做一些控制,比如暂停等
[scrapy. statscollectors] INFO: Dumping Scrapy stats :爬虫结束时候的一些统计信息,比如请求响应数量等
[ scrapy. core . scraper] DEBUG: Scraped from <200 http: / /wz . sun0769. com/html/ question/201707/3
40346. shtml>{ ’ content’ …} :每次yield item的时候回提示item的内容以及这个item来自的url地址

2019-01-19 09:50:48 [scrapy.utils.log] INFO: Scrapy 1.5.1 started (bot: tencent)

### 爬⾍ scrpay 框架依赖的相关模块和平台的信息
2019-01-19 09:50:48 [scrapy.utils.log] INFO: Versions:lxml 4.2.5.0,libxml2 2.9.5, cssselect 1.0.3, parsel 1.5.0, w3lib 1.19.0, Twisted 18.9.0, Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0i 14 Aug 2018), cryptography 2.3.1, Platform Windows-10-10.0.17134-SP0 

### ⾃定义的配置信息哪些被应⽤了
2019-01-19 09:50:48 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'tencent', 'NEWSPIDER_MODULE': 'tencent.spiders', 'ROBOTSTX T_OBEY': True, 'SPIDER_MODULES': ['tencent.spiders'], 'USER_AGENT': 'Mozilla/5.0 (Macintosh;Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537 7.36'}

### 插件信息
2019-01-19 09:50:48 [scrapy.middleware] INFO: Enabled extensions:['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole','scrapy.extensions.logstats.LogStats']

### 启动的下载器中间件
2019-01-19 09:50:48 [scrapy.middleware] INFO: Enabled downloader middlewares:['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware','scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware','scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware','scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware','scrapy.downloadermiddlewares.useragent.UserAgentMiddleware','scrapy.downloadermiddlewares.retry.RetryMiddleware','scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware','scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware','scrapy.downloadermiddlewares.redirect.RedirectMiddleware','scrapy.downloadermiddlewares.cookies.CookiesMiddleware','scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware','scrapy.downloadermiddlewares.stats.DownloaderStats']

### 启动的爬⾍中间件
2019-01-19 09:50:48 [scrapy.middleware] INFO: Enabled spider middlewares:['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware','scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware','scrapy.spidermiddlewares.urllength.UrlLengthMiddleware','scrapy.spidermiddlewares.depth.DepthMiddleware']

 ### 启动的管道
2019-01-19 09:50:48 [scrapy.middleware] INFO: Enabled item pipelines: ['tencent.pipelines.TencentPipeline']

 ### 开始爬去数据
2019-01-19 09:50:48 [scrapy.core.engine] INFO: Spider opened 
2019-01-19 09:50:48 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2019-01-19 09:50:48 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023

### 抓取 robots 协议内容
2019-01-19 09:50:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://hr.tencent.com/robots.txt> (referer: None) 

### start_url 发起请求
2019-01-19 09:50:51 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://hr.tencent.com/position.php?&start=#a0> (referer: None)

## 提示错误,爬⾍中通过 yeid 交给引擎的请求会经过爬⾍中间件,由于请求的 url 超出 allowed_domain 的范围,被 offsitmiddleware 拦截了
2019-01-19 09:50:51 [scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to 'hr.tencent.com': <GET https://hr.tencent.com/position.php?&start=> 

### 爬⾍关闭
2019-01-19 09:50:51 [scrapy.core.engine] INFO: Closing spider (finished)

### 本次爬⾍的信息统计
2019-01-19 09:50:51 [scrapy.statscollectors] INFO: Dumping Scrapy stats: 
{'downloader/request_bytes': 630,'downloader/request_count': 2,
'downloader/request_method_count/GET': 2, 'downloader/response_bytes': 4469,
 'downloader/response_count': 2, 'downloader/response_status_count/200': 2,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2019, 1, 19, 1, 50, 51, 558634),
 'log_count/DEBUG': 4,
 'log_count/INFO': 7,
 'offsite/domains': 1,
'offsite/filtered': 12,
 'request_depth_max': 1,
 'response_received_count': 2,
 'scheduler/dequeued': 1,
'scheduler/dequeued/memory': 1,
 'scheduler/enqueued': 1,
 'scheduler/enqueued/memory': 1,
'start_time': datetime.datetime(2019, 1, 19, 1, 50, 48, 628465)}

 2019-01-19 09:50:51 [scrapy.core.engine] INFO: Spider closed (finished)

2 Scrapy shell

Scrapy shell是⼀个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以⽤来测试XPath表达式
使用方法(终端打开):

scrapy shell https://www.baidu.com/

response.url: 当前相应的 URL 地址
response.request.url: 当前相应的请求的 URL 地址
response.headers: 响应头
response.body: 响应体,也就是 HTML 代码,默认是 byte 类型
response.requests.headers: 当前响应的请求头

3 Scrapy settings说明和配置

(1)什么是配置文件:Scrapy设定(settings)提供了定制Scrapy组件的方法。你可以控制包括核心(core),插件(extension),pipeline及spider组件。设定为代码提供了提取以key-value映射的配置值的的全局命名空间(namespace)。

(2)为什么需要配置文件:配置文件存放⼀些公共的变量(比如数据库的地址,账号密码等),方便别人和自己修改,⼀般用全大写字母命名变量名 SQL_HOST = ‘192.168.0.1’
(3)设置介绍
参考和学习:Scrapy学习篇(八)之settings

  • BOT_NAME (项目名字)
    默认: ‘scrapybot’
    Scrapy项目实现的bot的名字。用来构造默认 User-Agent,同时也用来log。
    当你使用 startproject 命令创建项目时其也被自动赋值。

  • CONCURRENT_ITEMS
    默认: 100
    Item Processor(即 Item Pipeline) 同时处理(每个response的)item的最大值

  • CONCURRENT_REQUESTS
    默认: 16
    Scrapy downloader 并发请求(concurrent requests)的最大值。

  • CONCURRENT_REQUESTS_PER_DOMAIN
    默认: 8
    对单个网站进行并发请求的最大值。

  • CONCURRENT_REQUESTS_PER_IP
    默认: 0
    对单个IP进行并发请求的最大值。如果非0,则忽略 CONCURRENT_REQUESTS_PER_DOMAIN 设定, 使用该设定。 也就是说,并发限制将针对IP,而不是网站。
    该设定也影响 DOWNLOAD_DELAY: 如果 CONCURRENT_REQUESTS_PER_IP 非0,下载延迟应用在IP而不是网站上。

  • DEFAULT_ITEM_CLASS
    默认: ‘scrapy.item.Item’
    the Scrapy shell 中实例化item使用的默认类。

  • DEFAULT_REQUEST_HEADERS
    默认:
    { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', }
    Scrapy HTTP Request使用的默认header。由 DefaultHeadersMiddleware 产生。

  • DOWNLOADER
    默认: ‘scrapy.core.downloader.Downloader’
    用于crawl的downloader.

  • DOWNLOADER_MIDDLEWARES
    默认:: {}
    保存项目中启用的下载中间件及其顺序的字典。

  • DOWNLOAD_DELAY
    默认: 0
    下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度, 减轻服务器压力。同时也支持小数。

  • DOWNLOAD_HANDLERS
    默认: {}
    保存项目中启用的下载处理器(request downloader handler)的字典。

  • DOWNLOAD_TIMEOUT
    默认: 180
    下载器超时时间(单位: 秒)。

  • EXTENSIONS
    默认:{}
    保存项目中启用的插件及其顺序的字典。

  • ITEM_PIPELINES
    默认: {}
    保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意。 不过值(value)习惯设定在0-1000范围内。

  • ITEM_PIPELINES_BASE
    默认: {}
    保存项目中默认启用的pipeline的字典。== 永远不要在项目中修改该设定,而是修改 ITEM_PIPELINES== 。

  • LOG_ENABLED
    默认: True
    是否启用logging。

  • LOG_ENCODING
    默认: ‘utf-8’
    logging使用的编码。

  • LOG_FILE
    默认: None
    logging输出的文件名。如果为None,则使用标准错误输出(standard error)。

  • LOG_FORMAT
    默认: ‘%(asctime)s [%(name)s] %(levelname)s: %(message)s’
    日志的数据格式

  • LOG_DATEFORMAT
    默认: ‘%Y-%m-%d %H:%M:%S’
    日志的日期格式

  • LOG_LEVEL
    默认: ‘DEBUG’
    log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。

  • LOG_STDOUT
    默认: False
    如果为 True ,进程所有的标准输出(及错误)将会被重定向到log中。

  • RANDOMIZE_DOWNLOAD_DELAY
    默认: True
    如果启用,当从相同的网站获取数据时,Scrapy将会等待一个随机的值 (0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY)。
    该随机值降低了crawler被检测到(接着被block)的机会。某些网站会分析请求, 查找请求之间时间的相似性。

  • REDIRECT_MAX_TIMES
    默认: 20
    定义request允许重定向的最大次数。超过该限制后该request直接返回获取到的结果。 对某些任务我们使用Firefox默认值。

  • ROBOTSTXT_OBEY
    默认: False
    是否遵循robots协议

  • SCHEDULER
    默认: ‘scrapy.core.scheduler.Scheduler’
    用于爬取的调度器。

  • SPIDER_MIDDLEWARES
    默认: {}
    保存项目中启用的下载中间件及其顺序的字典。

  • USER_AGENT
    默认: “Scrapy/VERSION (+http://scrapy.org)”
    爬取的默认User-Agent,除非被覆盖。

注意: Scrapy默认BASE设置,一般不要尝试去修改

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值