2015-10-20 43 views
0

我想从亚马逊的this page中抓取,但scrapy总是将我指向another page,其图像比第一页小。因此,我想停止重定向并抓取第一页。如何抓取scrapy中给定的url而不是重定向的urls?

经过一番搜索,我找到了this answer。但是,当我改变了我这样的代码:

yield Request(item['link'],meta = { 
        'dont_redirect': True, 
        'handle_httpstatus_list': [301,302] 
       }, callback=self.parse) 

艰难停止重定向,但它并没有任何分析的第一页!我的日志是这样的:

2015-10-20 14:56:40 [scrapy] INFO: Scrapy 1.0.3 started (bot: amazon) 
2015-10-20 14:56:40 [scrapy] INFO: Optional features available: ssl, http11 
2015-10-20 14:56:40 [scrapy] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'amazon.spiders', 'SPIDER_MODULES': ['amazon.spiders'], 'BOT_NAME': 'amazon'} 
2015-10-20 14:56:40 [scrapy] INFO: Enabled extensions: CloseSpider, TelnetConsole, LogStats, CoreStats, SpiderState 
2015-10-20 14:56:40 [scrapy] INFO: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, MetaRefreshMiddleware, HttpCompressionMiddleware, RedirectMiddleware, CookiesMiddleware, HttpProxyMiddleware, ChunkedTransferMiddleware, DownloaderStats 
2015-10-20 14:56:40 [scrapy] INFO: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware 
2015-10-20 14:56:40 [scrapy] INFO: Enabled item pipelines: AmazonPipeline 
2015-10-20 14:56:40 [scrapy] INFO: Spider opened 
2015-10-20 14:56:40 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 
2015-10-20 14:56:40 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023 
2015-10-20 14:56:41 [scrapy] DEBUG: Crawled (301) <GET http://www.amazon.com/s/ref=sr_il_ti_computers?rh=n%3A172282%2Cn%3A!493964%2Cn%3A541966%2Cn%3A565108%2Cp_n_size_browse-bin%3A7817231011&ie=UTF8&qid=1445324149&lo=computers> (referer: None) 
2015-10-20 14:56:41 [scrapy] INFO: Closing spider (finished) 
2015-10-20 14:56:41 [scrapy] INFO: Dumping Scrapy stats: 
{'downloader/request_bytes': 361, 
'downloader/request_count': 1, 
'downloader/request_method_count/GET': 1, 
'downloader/response_bytes': 423, 
'downloader/response_count': 1, 
'downloader/response_status_count/301': 1, 
'finish_reason': 'finished', 
'finish_time': datetime.datetime(2015, 10, 20, 6, 56, 41, 743646), 
'log_count/DEBUG': 2, 
'log_count/INFO': 7, 
'response_received_count': 1, 
'scheduler/dequeued': 1, 
'scheduler/dequeued/memory': 1, 
'scheduler/enqueued': 1, 
'scheduler/enqueued/memory': 1, 
'start_time': datetime.datetime(2015, 10, 20, 6, 56, 40, 868227)} 

任何人有任何想法吗?谢谢!

+0

如果服务器决定发送一个重定向头而不返回一个实体,那么当然避免重定向会让你看不到任何东西。如果您发现亚马逊总是重定向您的刮板,那么您应该尝试弄清楚是什么让他们做到了这一点。 – poke

+0

@poke谢谢,我真的不知道服务器为什么这样做,第一页可以在浏览器中查看,而不会有任何问题。 – Demonedge

+0

服务器通常会查看请求中发送的HTTP标头。您可以尝试发送与浏览器发送的内容完全相同的内容;然后一次删除一个头,直到找出哪个头让服务器以这种方式做出反应。 – poke

回答

0

你用callback = self.parse调用了什么函数?

+0

解析函数。 – Demonedge

+0

你应该在这里发布你的蜘蛛类型和解析函数。如果您覆盖其默认分析函数,某些蜘蛛将无法工作。 – fmp