Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重定向后的碎片回调_Python_Scrapy_Web Crawler - Fatal编程技术网

Python 重定向后的碎片回调

Python 重定向后的碎片回调,python,scrapy,web-crawler,Python,Scrapy,Web Crawler,我有一个非常基本的scrapy spider,它从文件中获取URL,然后下载它们。唯一的问题是,它们中的一些被重定向到同一个域中一个稍微修改过的url。我想使用response.meta在回调函数中获取它们,它可以在普通url上工作,但url被重定向回调似乎没有被调用。我怎样才能修好它? 这是我的密码 from scrapy.contrib.spiders import CrawlSpider from scrapy import log from scrapy import Request c

我有一个非常基本的scrapy spider,它从文件中获取URL,然后下载它们。唯一的问题是,它们中的一些被重定向到同一个域中一个稍微修改过的url。我想使用response.meta在回调函数中获取它们,它可以在普通url上工作,但url被重定向回调似乎没有被调用。我怎样才能修好它? 这是我的密码

from scrapy.contrib.spiders import CrawlSpider
from scrapy import log
from scrapy import Request
class DmozSpider(CrawlSpider):
    name = "dmoz"
    handle_httpstatus_list = [302]
    allowed_domains = ["http://www.exmaple.net/"]) 
    f = open("C:\\python27\\1a.csv",'r')
    url = 'http://www.exmaple.net/Query?indx='
    start_urls = [url+row for row in f.readlines()]
    def parse(self, response):
            print response.meta.get('redirect_urls', [response.url])
            print response.status 
            print (response.headers.get('Location'))
我也试过类似的方法:

def parse(self, response):
         return Request(response.url, meta={'dont_redirect': True, 'handle_httpstatus_list':     [302]}, callback=self.parse_my_url)
def parse_my_url(self, response):
        print response.status 
        print (response.headers.get('Location'))

它也不起作用。

默认情况下,会重定向刮擦请求,但如果不想重定向,可以这样做,请使用启动\u请求方法并在请求元中添加标志

    def start_requests(self):
        requests =[(Request(self.url+u, meta={'handle_httpstatus_list': [302],
                               'dont_redirect': True},         
                    callback=self.parse)) for u in self.start_urls]
        return requests

不,我需要得到重定向的url,它们在这种情况下是好的。你可以从回调函数得到它们,链接上必须有移动,或者你可以从标题下的位置得到url