私は、Scrapyを使用してURLをクロールしようとしています。しかし、それは存在しないページに私をリダイレクトします。scrapy-どのようにリダイレクトを停止する(302)
Redirecting (302) to <GET http://www.shop.inonit.in/mobile/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/1275197> from <GET http://www.shop.inonit.in/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/pid-1275197.aspx>
問題が存在するが、http://www.shop.inonit.in/mobile/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/1275197ないので、クローラはこれを見つけるカントhttp://www.shop.inonit.in/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/pid-1275197.aspxです。他の多くのウェブサイトもクロールしましたが、他の場所ではこの問題は発生しませんでした。このリダイレクトを止める方法はありますか?
ご協力いただければ幸いです。ありがとう。
更新:これは私のクモクラスです
class Inon_Spider(BaseSpider):
name = 'Inon'
allowed_domains = ['www.shop.inonit.in']
start_urls = ['http://www.shop.inonit.in/Products/Inonit-Gadget-Accessories-Mobile-Covers/-The-Red-Tag/Samsung-Note-2-Dead-Mau/pid-2656465.aspx']
def parse(self, response):
item = DealspiderItem()
hxs = HtmlXPathSelector(response)
title = hxs.select('//div[@class="aboutproduct"]/div[@class="container9"]/div[@class="ctl_aboutbrand"]/h1/text()').extract()
price = hxs.select('//span[@id="ctl00_ContentPlaceHolder1_Price_ctl00_spnWebPrice"]/span[@class="offer"]/span[@id="ctl00_ContentPlaceHolder1_Price_ctl00_lblOfferPrice"]/text()').extract()
prc = price[0].replace("Rs. ","")
description = []
item['price'] = prc
item['title'] = title
item['description'] = description
item['url'] = response.url
return item
感謝を応答するために!しかし、私はこのコード行をどこに置くべきかについて混乱していますか?私はstart_requestsを上書きしようとしましたが、 "Response 'オブジェクトに' body_as_unicode '属性がありません"というエラーが表示されます。アイテムとリクエストを同時に返すことはできますか? –
response.status == 302をテストし、別の種類の処理を行うリダイレクトでhxs = HtmlXPathSelector(response)を呼び出すことができます。この場合のhxsは、response.bodyが302ステータスで空であるために失敗します –
誰かがテストしましたか?私は '' handle_httpstatus_list 'でテストしました:[404、301] 'ただ404の作品 –