Scrapy Max Redirect проблема - PullRequest
       16

Scrapy Max Redirect проблема

1 голос
/ 02 апреля 2012

Я просто пытаюсь просканировать одну страницу

start_urls = ['https://www.mileageplusshopping.com/shopping/b____alpha.htm']

, но перенаправляю снова и снова, в конце scrapy Откажусь это

, хотя я пытался

REDIRECT_MAX_TIMES=100

эта настройка также, но все еще ее перенаправление 100 раз и scrap Отмена это

любая помощь будет оценена

вот журнал.

2012-04-02 20:10:53+0500 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:53+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-02 20:10:54+0500 [mileageplusshopping] DEBUG: Discarding <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>: max redirections reached
2012-04-02 20:10:54+0500 [mileageplusshopping] ERROR: Error downloading <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>: 
2012-04-02 20:10:54+0500 [mileageplusshopping] INFO: Closing spider (finished)

Я нахожусь на скрапе 0.14

Вот мой класс настройки

BOT_NAME = 'mall_crawler'
BOT_VERSION = '1.0'

SPIDER_MODULES = ['mall_crawler.spiders']
NEWSPIDER_MODULE = 'mall_crawler.spiders'
USER_AGENT = '%s/%s' % (BOT_NAME, BOT_VERSION)

USER_AGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8'

RANDOMIZE_DOWNLOAD_DELAY = True
DOWNLOAD_DELAY = 1   

HTTPCACHE_ENABLED = True    
HTTPCACHE_EXPIRATION_SECS = 0

DOWNLOADER_MIDDLEWARES = {
    'scrapy.contrib.downloadermiddleware.httpcompression.HttpCompressionMiddleware': None,
}

SCHEDULER_ORDER = 'BFO'

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Я нашел решение, поэтому я хотел бы поделиться с вами людьми

. Это просто из-за

HTTPCACHE_ENABLED = True  

на самом деле start_url https://www.mileageplusshopping.com/shopping/b____alpha.htm

, который перенаправляет на https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false

, который перенаправляет на https://x.www.mileageplusshopping.com/shopping/b____alpha.htm

и, наконец, перенаправляет на https://www.mileageplusshopping.com/shopping/b____alpha.htm

, если вы посмотрите на первый запрос и последний запрос, оба одинаковы

, поэтому при последнем запросе он нашел этот запрос в кэше и цикл запускается, поэтому, если мы не кэшируем страницы, все в порядке.

илинам нужно обработать все это вручную, если мы хотим кэшировать страницы.

0 голосов
/ 03 апреля 2012

Не думаю, что это проблема REDIRECT_MAX_TIMES. Я думаю, что это просто проблема перенаправления.

Вы должны выяснить, почему веб-страница перенаправляет вас.

Почему? Возможности:

  1. Глядя на ваши USER_AGENT (я думаю, что это наиболее вероятный)
  2. Глядя на ваши куки.
  3. Он выполняет некоторые действия, используя Javascript, который явно «отключен» в scrapy.
  4. Или их комбинация.

UPDATE:

Я сделал тестового паука для этого сайта, и похоже, что это не простой сайт. Журнал Firefox показывает это:

[10:21:45.707] GET https://www.mileageplusshopping.com/shopping/b____alpha.htm [HTTP/1.1 302 Found 2128ms]
[10:21:47.856] GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false [HTTP/1.1 302 Moved Temporarily 517ms]
[10:21:48.375] GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm [HTTP/1.1 302 Found 1664ms]
[10:21:50.042] GET https://www.mileageplusshopping.com/shopping/b____alpha.htm [HTTP/1.1 200 OK 3818ms]
[10:21:53.230] GET https://a248.e.akamai.net/f/248/35975/5d/i.mallnetworks.com/images/css/united/mn_brand_united_noncardholder.css [HTTP/1.0 200 OK 446ms]

Вывод, который у меня есть, заключается в том, что браузер также перенаправлен, перенаправление выполнено нормально. Нужно продолжать исследования (я не такой эксперт).

ДРУГОЕ ОБНОВЛЕНИЕ:

На самом деле паук здесь работает нормально:

class TestSpider(BaseSpider):
    name = "mileageplusshopping_com"
    allowed_domains = ["mileageplusshopping.com"]
    start_urls = [
        'https://www.mileageplusshopping.com/shopping/b____alpha.htm'
    ]

    def parse(self, response):
        print 'here'

Продолжительность:

vic@wic:~/projects/test$ scrapy crawl mileageplusshopping_com
2012-04-03 10:30:40+0300 [scrapy] INFO: Scrapy 0.14.2 started (bot: test)
2012-04-03 10:30:40+0300 [scrapy] DEBUG: Enabled extensions: LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, MemoryUsage, SpiderState
2012-04-03 10:30:40+0300 [scrapy] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, RedirectMiddleware, CookiesMiddleware, HttpCompressionMiddleware, ChunkedTransferMiddleware, DownloaderStats
2012-04-03 10:30:40+0300 [scrapy] DEBUG: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2012-04-03 10:30:40+0300 [scrapy] DEBUG: Enabled item pipelines: 
2012-04-03 10:30:40+0300 [mileageplusshopping_com] INFO: Spider opened
2012-04-03 10:30:40+0300 [mileageplusshopping_com] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2012-04-03 10:30:40+0300 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023
2012-04-03 10:30:40+0300 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2012-04-03 10:30:42+0300 [mileageplusshopping_com] DEBUG: Redirecting (302) to <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false> from <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-03 10:30:43+0300 [mileageplusshopping_com] DEBUG: Redirecting (302) to <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://www.united.com/web/en-US/apps/sso/LoginBridge.aspx?target=/shopping/b____alpha.htm&redirect=sec&targetURLKey=cartua.bridge.url&remove=false>
2012-04-03 10:30:44+0300 [mileageplusshopping_com] DEBUG: Redirecting (302) to <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> from <GET https://x.www.mileageplusshopping.com/shopping/b____alpha.htm>
2012-04-03 10:30:47+0300 [mileageplusshopping_com] DEBUG: Crawled (200) <GET https://www.mileageplusshopping.com/shopping/b____alpha.htm> (referer: None)
here
2012-04-03 10:30:47+0300 [mileageplusshopping_com] INFO: Closing spider (finished)
2012-04-03 10:30:47+0300 [mileageplusshopping_com] INFO: Dumping spider stats:
        {'downloader/request_bytes': 1140,
         'downloader/request_count': 4,
         'downloader/request_method_count/GET': 4,
         'downloader/response_bytes': 68882,
         'downloader/response_count': 4,
         'downloader/response_status_count/200': 1,
         'downloader/response_status_count/302': 3,
         'finish_reason': 'finished',
         'finish_time': datetime.datetime(2012, 4, 3, 7, 30, 47, 879869),
         'scheduler/memory_enqueued': 4,
         'start_time': datetime.datetime(2012, 4, 3, 7, 30, 40, 250275)}
2012-04-03 10:30:47+0300 [mileageplusshopping_com] INFO: Spider closed (finished)
2012-04-03 10:30:47+0300 [scrapy] INFO: Dumping global stats:
        {'memusage/max': 88838144, 'memusage/startup': 88838144}
vic@wic:~/projects/test$ 
...