Python使用scrapy采集数据过程中放回下载过大页面的方法

yipeiwu_com6年前Python基础

本文实例讲述了Python使用scrapy采集数据过程中放回下载过大页面的方法。分享给大家供大家参考。具体分析如下:

添加以下代码到settings.py,myproject为你的项目名称

复制代码 代码如下:
DOWNLOADER_HTTPCLIENTFACTORY = 'myproject.downloader.LimitSizeHTTPClientFactory'

自定义限制下载过大页面的模块

复制代码 代码如下:
MAX_RESPONSE_SIZE = 1048576 # 1Mb
from scrapy.core.downloader.webclient import ScrapyHTTPClientFactory, ScrapyHTTPPageGetter
class LimitSizePageGetter(ScrapyHTTPPageGetter):
    def handleHeader(self, key, value):
        ScrapyHTTPPageGetter.handleHeader(self, key, value)
        if key.lower() == 'content-length' and int(value) > MAX_RESPONSE_SIZE:
            self.connectionLost('oversized')
class LimitSizeHTTPClientFactory(ScrapyHTTPClientFactory):
     protocol = LimitSizePageGetter

希望本文所述对大家的Python程序设计有所帮助。

相关文章

使用Python如何测试InnoDB与MyISAM的读写性能

使用Python如何测试InnoDB与MyISAM的读写性能

前言 由于近期有个项目对系统性能要求很高,技术选型上由于种种原因已经确定使用Mysql数据库,接下来就是要确定到底使用哪种存储引擎。我们的应用是典型的写多读少,写入内容为也很短,对系统的...

linux环境下安装pyramid和新建项目的步骤

1. 安装python虚拟环境复制代码 代码如下:virtualenv --no-site-packages env 2. 安装pyramid 复制代码 代码如下:$ env/bin/...

Python实现合并两个有序链表的方法示例

Python实现合并两个有序链表的方法示例

本文实例讲述了Python实现合并两个有序链表的方法。分享给大家供大家参考,具体如下: 思路:先选出第一个节点,然后遍历两个链表,把小的作为当前节点的下一个节点,一直到其中一个链表遍历...

pandas Dataframe行列读取的实例

如下所示: import matplotlib.pyplot as plt import tkinter import numpy as np import pandas as...

python实现文件分组复制到不同目录的例子

场景:某个文件夹下面包含数量巨大的文件,需求需要将这些文件按组(比如5000个一组)存放到不同的目录中去。 复制代码 代码如下:# Filename: CopyFiles.pyimpor...