python爬虫之十一_scrapy框架经验、错误

scrapy_实战经验

一、filespipeline 下载文件

1.setiing设置
ITEM_PIPELINES、FILES_STORE两个参数缺一不可,将FILES_STORE写成FILE_STORE导致pipeline未启动

2020-02-13 15:48:27 [scrapy.middleware] INFO: Enabled item pipelines:
[]

2.下载结果
urlretrieve下载文件,边下载文件边显示,而且urlretrieve在参数中要指定下载的文件名
filespipeline下载文件,文下载完成后文件才显示,文件名自动生成,如果url中有文件的后缀名则自动采用后缀名,如果没有需要自己手动改

3.下载设置
filespipeline下载文件设置限制条件:下载时间(DOWNLOAD_TIMEOUT)、重试次数(Retring)、下载重定向(Redirect)、同一域名同时下载最大个数、同一IP同时下载最大个数

当下载文件超时会停止,

4.下载过程

5.下载报错

{
   'downloader/exception_count': 29,
 'downloader/exception_type_count/twisted.internet.error.TCPTimedOutError': 1,
 'downloader/exception_type_count/twisted.internet.error.TimeoutError': 20,
 'downloader/exception_type_count/twisted.web._newclient.ResponseNeverReceived': 8,
 'downloader/request_bytes': 89242,
 'downloader/request_count': 202,
 'downloader/request_method_count/GET': 202,
 'downloader/response_bytes': 3689994587,
 'downloader/response_count': 260,
 'downloader/response_status_count/200': 226,
 'downloader/response_status_count/302': 30,
 'downloader/response_status_count/404': 4,
 'elapsed_time_seconds': 6032.416843,
 'file_count': 42,
 'file_status_count/downloaded': 41,
 'file_status_count/uptodate': 1,
 'finish_reason': 'finished',
 'finish_time': datetime.datetime(2020, 2, 13, 19, 25, 10, 570224),
 'item_scraped_count': 75,
 'log_count/DEBUG': 1469,
 'log_count/ERROR': 19,
 'log_count/INFO': 110,
 'log_count/WARNING': 33,
 'request_depth_max': 2,
 'response_received_count': 230,
 'retry/max_reached': 29,
 'scheduler/dequeued': 185,
 'scheduler/dequeued/memory': 185,
 'scheduler/enqueued': 185,
 'scheduler/enqueued/memory': 185,
 'spider_exceptions/AttributeError': 4,
 'spider_exceptions/TypeError': 15,
 'start_time': datetime.datetime(2020, 2, 13, 17, 44, 38, 153381)}
2020-02-14 03:25:10 [scrapy.core.engine] INFO: Spider closed (finished)

一共94个URL,spider解析失败15+4=19个,生成item75个;下载42个文件,异常29个,404有4个,一共75个;下载超时20个,请求超时1个,请求拒绝8个;
【404和其他异常都会导致文件没有下载,文件没有下载files为空】
【3个是selenium打不开,直接返回None的,应该是交给scrapy下载器仍然打不开,返回了404】

解析失败原因:
TypeError:
12例中,videoSrc不是video标签的属性,而是video标签内的source标签的属性;改正方法:改用//video//@src
3例中,selenium加载超时直接返回None;改正方法:改成点击body而不是div试一试(只要将焦点移过去就能触发JS而不需要点击);
AttributeError:
4例中,时间不是写死在HTML源码中的;改正方法:如果为空则以当天时间为日期,另外日期要改成YYYYMMDD格式;

File下载失败:
下载404原因:
下载超时原因:
TCP超时原因:
拒绝轻易原因:
都只有改成随机请求头试一试

另外,补上修改文件名的功能

2020-02-14 01:56:08 [scrapy.downloadermiddlewares.retry] DEBUG: Gave up retrying <GET http://www.abc1.com> (failed 1 times): User timeout caused connection failure: Getting http://www.abc.com took longer than 600.0 seconds..
2020-02-14 01:56:08 [scrapy.pipelines.files] WARNING: File (unknown-error): Error downloading file from <GET http://www.abc1.com> referred in <None>: User timeout caused connection failure: Getting http://www.abc.com took longer than 600.0 seconds.
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值