.aspx ページをクロールしようとしていますが、存在しないページにリダイレクトされます。これを解決するために、'dont_merge_cookies': True および 'dont_redirect': True を設定して、start_requests を上書きしようとしましたが、"'Response' オブジェクトに属性 'body_as_unicode' がありません" というエラーが表示され、応答クラス タイプが表示されます。 「scrapy.http.response.Response」です。
これが私のコードです:
class Inon_Spider(BaseSpider):
name = 'Inon'
allowed_domains = ['www.shop.inonit.in']
start_urls = ['http://www.shop.inonit.in/Products/Inonit-Men-Jackets/QUIRK-BOX/Toy-Factory-Jacket---Soldiers/pid-1177471.aspx?Rfs=&pgctl=713619&cid=CU00049295']
#redirects to http://www.shop.inonit.in/Products/Inonit-Men-Jackets/QUIRK-BOX/Toy-Factory-Jacket---Soldiers/1177471
def start_requests(self):
start_urls = ['http://www.shop.inonit.in/Products/Inonit-Men-Jackets/QUIRK-BOX/Toy-Factory-Jacket---Soldiers/pid-1177471.aspx?Rfs=&pgctl=713619&cid=CU00049295']
for i in start_urls:
yield Request(i, meta = {
'dont_merge_cookies': True,
'dont_redirect': True,
'handle_httpstatus_list': [302]
},callback=self.parse)
def parse(self, response):
print "Response %s" %response.__class__
resp = TextResponse
item = DealspiderItem()
hxs = HtmlXPathSelector(resp)
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