2015-07-19 54 views
2

我只想将url传递给另一个分析器。它没有像文档中显示的那样工作,所以我已经将我的代码减少到了最低限度,但仍然没有任何结果。与产量也无法从Scrapy中返回的请求获得响应

# -*- coding: utf-8 -*- 
import scrapy 
import cfscrape 
from scrapy.spiders import Spider 
import json 

rez=[] 

class LinkbaseSpider(Spider): 

name = "mine" 
allowed_domains = ["127.0.0.1"] 
start_urls = (
    'file://127.0.0.1/home/link.html', 
) 

def parse(self, response): 

    request= scrapy.Request("http://www.google.com",callback=self.parse2) 
    return request 


def parse2(self,response): 
    self.logger.info("Visited %s", response.url) 
    print("00000000000000000000000") 

回答

2

试图假设你的缩进实际上是正确的,有一个OffSiteMiddleware可以过滤基于allowed_domains您的要求。在这种情况下,不允许google.com,因为allowed_domains设置为["127.0.0.1"]

您可以通过设置dont_filter=True实例化一个Request时变通办法:

def parse(self, response): 
    return scrapy.Request("http://www.google.com", 
          callback=self.parse2, 
          dont_filter=True) 

仅供参考,如果你有兴趣,这里是中间件的内部工作原理:source code