1

.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
4

0 に答える 0