Scrapy错误处理meta中的refresh指令

郑昀 20101124

当用 Scrapy(一个开源爬虫框架) 访问 http://www.cjis.cn/info/zjzx.jsp 页面时,由于该页面html中指定了 <meta http-equiv="refresh" content="30;   url=http://www.cjis.cn/info/zjzx.jsp"> ,所以 Scrapy 会自己循环请求该页面,直至到达最大跳转限制后退出,并打印:

DEBUG: Discarding <GET http://www.cjis.cn/info/zjzx.jsp>: max redirections reached 。
所以我们必须禁用 RedirectMiddleware ,操作如下:

修改一个scrapy project的settings.py,增加下面这段话:

DOWNLOADER_MIDDLEWARES_BASE = {
    'scrapy.contrib.downloadermiddleware.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.contrib.downloadermiddleware.httpauth.HttpAuthMiddleware': 300,
    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 400,
    'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 500,
    'scrapy.contrib.downloadermiddleware.defaultheaders.DefaultHeadersMiddleware': 550,
    #'scrapy.contrib.downloadermiddleware.redirect.RedirectMiddleware': 600,
    'scrapy.contrib.downloadermiddleware.cookies.CookiesMiddleware': 700,
    'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 750,
    'scrapy.contrib.downloadermiddleware.httpcompression.HttpCompressionMiddleware': 800,
    'scrapy.contrib.downloadermiddleware.stats.DownloaderStats': 850,
    'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 900,
}

注意,把 RedirectMiddleware 给注释了。

时间: 2024-09-13 05:39:38

Scrapy错误处理meta中的refresh指令的相关文章

javascript-meta中的refresh返回上一页,我想让它自动跳转到上一页,表单中的数据还保留

问题描述 meta中的refresh返回上一页,我想让它自动跳转到上一页,表单中的数据还保留 我在head中添加了这样一句话,为什么还是不行? 整个head如下所示: Bootstrap Admin <!-- Demo page code --> <meta http-equiv="refresh" content="2; url=javascript:window.history.go(-1);"> 解决方案 自动跳转上/下一页的脚本---

C#中的预处理指令

与C++不同,C#没有独立的预处理器.C#中的预处理指令(pre-processing directives)仅仅用来与C保持一致,而并不是编译器开始编译代码之前的一个单独的处理步骤,它是作为词法解析的一部分来执行的. 预处理指令都以#号开头并位于行首(前面可以出现空格符).在介绍条件编译之前,我们先学习两条用于定义符号和取消符号定义的预处理指令:#define和#undef. #define指令对于有一点C语言知识的读者来说再熟悉不过,它非常类似于C中的宏定义: #define COUNT 这

AngularJS中的自定义指令的使用介绍

  这篇文章主要介绍了深入讲解AngularJS中的自定义指令的使用,AngularJS是一款热门的JavaScript开发库,需要的朋友可以参考下 AngularJS的自定义指令,就是你自己的指令,加上编译器编译DOM时运行的原生核心函数.这可能很难理解.现在,假设我们想在应用中不同页面复用一些特定的代码,而又不复制代码.那么,我们就可以简单地把这段代码放到单独的文件,并调用使用自定义指令的代码,而不是一遍又一遍地敲下来.这样的代码更容易理解.AngularJS中有四种类型的自定义指令: 元素

如何在wavecom编程中通过AT指令判断被呼方的第一声回铃音

问题描述 如何在wavecom编程中通过AT指令判断被呼方的第一声回铃音 如何在wavecom编程中通过AT指令判断被呼方的第一声回铃音 解决方案 wavecom 的 AT 返回 RING,即可认为是被叫方的回铃声

ASPUPLOAD上传错误:外部对象中发生了可捕获的错误(C06D007E)

在一次配置服务器安全权限后,测试aspupload上传功能时,出现了"外部对象中发生了可捕获的错误(C06D007E).脚本无法继续执行"的错误,经常一翻折腾,终于解决,通过本文分享出来,希望能够帮助碰到同样问题的阿里西西用户... ASPUPLOAD上传错误 外部对象中发生了可捕获的错误(C06D007E).脚本无法继续执行. 原因: c:\windows\system32 目录权限的问题. 禁止了IIS用户的访问权限,就出错了 解决: 授予IIS用户读取c:\windows\sys

using-asp.net 错误 CS1028: 意外的预处理器指令

问题描述 asp.net 错误 CS1028: 意外的预处理器指令 using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI

Microsoft JET Database Engine 错误 标准表达式中数据类型不匹配。

问题描述 Microsoft JET Database Engine 错误 标准表达式中数据类型不匹配. <% Dim XMID,pages2,xyz XMID = request("XMID") pages = request("pages") pages2 = request("pages2") xyz= request("xyz") Dim Rs2 Set Rs2 = oConn.Execute("SEL

iOS逆向工程之Hopper中的ARM指令

虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是可以的.虽然当时感觉学这门课以后似乎不怎么用的上,可曾想这不就用上了吗,不过之前学的都差不多忘了,还得捡起来呢.ARM指令集是精简指令集,从名字我们就能看出指令的个数比那些负责指令集要少一些.当然本篇所涉及的ARM指令集是冰山一角,不过也算是基础,可以阅读Hopper中的汇编了,实践出真知,看多了自

freemarker-SQL语句中 加入FreeMarker指令 怎么配置?

问题描述 SQL语句中 加入FreeMarker指令 怎么配置? <entry key="user.findUsers.query"><value><![CDATA[ from User u where 1=1 <#if username?has_content> and u.username like %:username% </#if> <#if orderBy?has_content> order by u.${o