在爬取免费代理ip室发现,第一页爬取之后后续的多页爬取没有被解析。在查看调试信息时发现显示 Filtered offsite request to 'www.kuaidaili.com',经网上查找先关问题解决方案,发现为域名爬取限制,即allowed_domains = ['www.kuaidaili.com/']字段。

解决方法:1.在allowed_domains中加入 url

     2.直接将allowed_domains = [],即不做限制

     3.将scrapy.Request(url=url, callback=self.parse,dont_filter=True),中的dont_filter设置为True。

import scrapy
from freeIP_spider.items import FreeipSpiderItem class FreeipSpider(scrapy.Spider):
name = 'freeip'
#allowed_domains = ['www.kuaidaili.com/']
allowed_domains =[]
start_urls = ['http://www.kuaidaili.com/free/inha/1//'] # 爬取多页
url = 'http://www.kuaidaili.com/free/inha/{}/'
page = 1 def parse(self, response):
#实例化数据结构
item= FreeipSpiderItem() tr= response.xpath('//table//tbody/tr')
#print('=====================',len(tr))
for td in tr:
item['ip']= td.xpath('./td[1]/text()').extract_first()
item['port']= td.xpath('./td[2]/text()').extract_first()
item['ip_type']= td.xpath('./td[4]/text()').extract_first()
# print('=====================')
# print(item)
# print('=====================') yield item # 爬取多页
if self.page < 5:
self.page+=1
url = self.url.format(self.page)
#yield scrapy.Request(url=url, callback=self.parse,dont_filter=True)
yield scrapy.Request(url=url, callback=self.parse)

Scrapy之Request函数回调未执行 Filtered offsite request to 'XXX'的更多相关文章

  1. scrapy-yield scrapy.Request()不执行、失效、Filtered offsite request to错误 [转]

    scrapy错误:yield scrapy.Request()不执行.失效.Filtered offsite request to错误.首先我们在Request()方法里面添加这么一个东东: yiel ...

  2. scrapy 爬网站 显示 Filtered offsite request to 错误

    爬取zol 网站图片,无法抓取. 在 setting.py 文件中 设置 日志 记录等级 LOG_LEVEL= 'DEBUG' LOG_FILE ='log.txt' 查看日志 发现报 2015-11 ...

  3. 报错 Filtered offsite request

    用scrapy框架迭代爬取时报错 scrapy日志: 在 setting.py 文件中 设置 日志 记录等级 LOG_LEVEL= 'DEBUG' LOG_FILE ='log.txt' 观察 scr ...

  4. 问题[scrapy.spidermiddlewares.offsite] DEBUG: Filtered offsite request to...

    原因是二次解析的域名被过滤掉了, 解决办法 解决办法一: yield scrapy.Request(url=detail_url, meta={'item': item}, callback=self ...

  5. Scrapy - Request 中的回调函数callback不执行

    回调函数callback不执行 大概率是被过滤了 两种方法: 在 allowed_domains 中加入目标url 在 scrapy.Request() 函数中将参数 dont_filter=True ...

  6. DLL与EXE之间的通讯调用 以及 回调函数的线程执行空间

    dll 与 exe 之间的通讯方式有很多种, 本文采用回调函数的方法实现, 本文也将研究多线程,多模块的情况下,回调函数所在的线程, 啥也不说了,先附上代码: 下面的是dll模块的的, dll的工程文 ...

  7. vue组件中—bus总线事件回调函数多次执行的问题

    在利用vue组件进行事件监听时发现,如果对N个vue组件实例的bus总线绑定同一事件的回调函数,触发任意组件的对应事件,回调函数至少会被执行N次,这是为什么呢? 为此,调研了普通对象的事件绑定和触发实 ...

  8. ajax.request函数使用详解

    Ajax.Request   ? Ajax.Request( url, { method:method, parameters:para, postBody:xmlString, asynchrono ...

  9. TinScrapy-简化的Scrapy原码-查看爬虫的执行流程

    学习了自定义的TinyScrapy框架,整理出以下定注释的代码 from twisted.web.client import getPage,defer from twisted.internet i ...

  10. 【Cocos2d-X开发学习笔记】第18期:动作类之改变动作对象、函数回调动作以及过程动作的使用

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为3.0alpha0-pre) ,PC开发环境Windows7,C++开发环境VS2010 一.改变动作执行对象 CCTargetedAct ...

随机推荐

  1. .net core Ubuntu下docker部署(精简版)

    一.首先先添加一个.netCore 项目,选择启用docker(我用的是vs2019,之前的可能需要手动点击项目添加docker支持) 没有的话需要手动添加 之后你的项目会存在这个dockerfile ...

  2. 五十条常用的MySQL语句

    1.查询"001"课程比"002"课程成绩高的所有学生的学号:select a.S# from (select s#,score from SC where C ...

  3. Flutter:StatefulWidget 怎么传参

    定义好一个有状态(或无状态)的组件之后,需要为其传递一些参数,希望组件能够更加灵活使用.那么,在 Flutter 中如何为其传递参数呢? 以下是 StatefulWidget 传递值的步骤,一共三步: ...

  4. 从安装开发环境到第一个“hello world”

    安装Java8 为什么要安装java8? java8和小破站的教程同步. 安装方法: 1.官网安装(我踩雷了,下载得慢,不过最后安装成功了!) 2.镜像网站:清华镜像 3.公众号(网上的全是套路了) ...

  5. Net Core 网关 Ocelot 简单案例

    1.什么是Ocelot Ocelot是一个用.NET Core实现并且开源的API网关,它功能强大,包括了:路由.请求聚合.服务发现.认证.鉴权.限流熔断.并内置了负载均衡器与Service Fabr ...

  6. npm+react linux 开荒

    安装npm 从 https://nodejs.org/dist/ 找到下载包,并不是版本越高越好,得看项目的需要. 解压之后,将解压路径bin添加到PATH里. 完成后可配置npm源 npm inst ...

  7. word2021自带viso屏幕闪烁、抖动问题解决

    文件--选项-->高级-->显示-->勾选禁用硬件图像加速

  8. combox下拉框控件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. 下载nodejs和vue

    下载nodejs https://nodejs.org/en 下载或更新npm npm install cnpm -g npm install -g vue 全局安装 创建一个基于 "web ...

  10. c++练习266题:楼层编号

    *266题 原题传送门:http://oj.tfls.net/p/266 题解: #include<bits/stdc++.h>using namespace std; int t;//高 ...