2014-11-14 2 views
1

Я использую scrapy для получения списка URL-адресов. Некоторые из URL перенаправляются на другой номер < 302>. Я хочу рассчитать количество переадресаций, которые происходят для одного URL-адреса, а также полный набор всех промежуточных URL-адресов перенаправления.Количество переадресаций в Scrapy

Fetching - http://ign.com

Перенаправить к - http://de.ign.com/

redirect_count = 1

url_set = [ 'http://ign.com', 'http://de.ign.com/']

ответ

1

то, что вам нужно, это ручка 302 httpstatus,

handle_httpstatus_list = [200, 302, 404] # any other if you want 

вот пример:

определить вам items.py как,

from scrapy.item import Item, Field 

class myItems(Item): 
    redirect_count = Field() 

Позже в вашем spider.py,

from scrapy.spider import Spider 
from scrapy.selector import Selector 
from .items import myItems 

class mainSpider(Spider): 
    name = "crazyCrawler" 
    allowed_domains = ['http://ign.com', 'http://de.ign.com/'] 
    handle_httpstatus_list = [200, 302, 404] # any other if you want 

    start_urls = [ 
     "http://ign.com" 
    ] 

    def parse(self, response): 
     # spider 
     sel = Selector(response) 

     items = [] 
     item = myItems() 

     item['redirect_count'] = 0 

     if response.status == 302: 
      item['redirect_count'] += 1 

Теперь вы можете запустить,

scrapy crawl crazyCrawler -o items.json 
+0

Спасибо ... за помощь. Выяснил это сам. Некоторая информация уже выставлена ​​в метатете из стандартного «BaseRedirectMiddleware» в режиме scrapy, отдых, который я могу обрабатывать, как вы описали :) – Nikk

+0

Добро пожаловать. То, что было описано в (https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/downloadermiddleware/redirect.py), - это подробная версия обработки перенаправления в scrapy –

Смежные вопросы