Код состояния Scrapy и ответа: как его проверить?

Я использую scrapy для сканирования моей карты сайта, для проверки 404, 302 и 200 страниц. Но я не могу получить код ответа. Это мой код:

from scrapy.contrib.spiders import SitemapSpider class TothegoSitemapHomesSpider(SitemapSpider): name ='tothego_homes_spider' ## robe che ci servono per tothego ## sitemap_urls = [] ok_log_file = '/opt/Workspace/myapp/crawler/valid_output/ok_homes' bad_log_file = '/opt/Workspace/myapp/crawler/bad_homes' fourohfour = '/opt/Workspace/myapp/crawler/404/404_homes' def __init__(self, **kwargs): SitemapSpider.__init__(self) if len(kwargs) > 1: if 'domain' in kwargs: self.sitemap_urls = ['http://url_to_sitemap%s/sitemap.xml' % kwargs['domain']] if 'country' in kwargs: self.ok_log_file += "_%s.txt" % kwargs['country'] self.bad_log_file += "_%s.txt" % kwargs['country'] self.fourohfour += "_%s.txt" % kwargs['country'] else: print "USAGE: scrapy [crawler_name] -a country=[country] -a domain=[domain] \nWith [crawler_name]:\n- tothego_homes_spider\n- tothego_cars_spider\n- tothego_jobs_spider\n" exit(1) def parse(self, response): try: if response.status == 404: ## 404 tracciate anche separatamente self.append(self.bad_log_file, response.url) self.append(self.fourohfour, response.url) elif response.status == 200: ## printa su ok_log_file self.append(self.ok_log_file, response.url) else: self.append(self.bad_log_file, response.url) except Exception, e: self.log('[eccezione] : %s' % e) pass def append(self, file, string): file = open(file, 'a') file.write(string+"\n") file.close() 

Из документов scrapy они сказали, что параметр response.status представляет собой целое число, соответствующее коду состояния ответа. Пока он регистрирует только 200 URL-адресов статуса, а 302 не записываются в выходной файл (но я вижу переадресацию в crawl.log). Итак, что мне нужно сделать, чтобы «заманить» 302 запросов и сохранить эти URL?

  • Как я могу использовать атрибут fields_to_export в BaseItemExporter для заказа моих данных CSV Scrapy?
  • python install lxml на mac os 10.10.1
  • Сохранение предметов Scrapy для MongoDB
  • Scrapy - выберите конкретную ссылку на основе текста
  • Разница между BeautifulSoup и искателем Scrapy?
  • Создание цикла для анализа данных таблицы в scrapy / python
  • Как правильно использовать Правила, ограничивать_xpaths для обхода и анализа URL-адресов с помощью scrapy?
  • python scrapy get href с помощью селектора css
  • 2 Solutions collect form web for “Код состояния Scrapy и ответа: как его проверить?”

    http://readthedocs.org/docs/scrapy/en/latest/topics/spider-middleware.html#module-scrapy.contrib.spidermiddleware.httperror

    Предполагая, что промежуточное ПО промежуточного спайка включено, коды ответов за пределами диапазона 200-300 отфильтрованы HttpErrorMiddleware. Вы можете указать промежуточное ПО, которое вы хотите обрабатывать 404, установив атрибут handle_httpstatus_list на своем паук.

     class TothegoSitemapHomesSpider(SitemapSpider): handle_httpstatus_list = [404] 

    Только чтобы получить полный ответ здесь:

    • Установите Handle_httpstatus_list = [302];

    • По запросу установите dont_redirect в True на мета. Например, Request (URL, meta = {'dont_redirect: True});

    Interesting Posts

    psycopg2 "TypeError: не все аргументы, преобразованные во время форматирования строки"

    Использование списков саморегуляции

    Существует ли реализация HAML для использования с Python и Django

    дополнительный пустой элемент при удалении элемента из кортежа

    установка Mayavi с помощью pip – нет модуля с именем vtk

    Django: использование аннотата, графа и отличия в Queryset

    Метод numpy.ma (masked) имеет средние значения несоответствующего типа

    Unittest setUp / tearDown для нескольких тестов

    Как получить форму с повторяющимися элементами

    Каков наилучший способ поделиться ноутбуками Jupyter с не-программистами?

    Как сохранить прогрессивную jpeg с помощью Python PIL 1.1.7?

    Объединение файлов данных с помощью PyInstaller (–onefile)

    Сохранение записей словаря Python в том порядке, в котором они нажаты

    Sublime Text 3, Python 3 и UTF-8 не любят друг друга

    Смутно с списками python: они или не являются итераторами?

    Python - лучший язык программирования в мире.