Próbuję zaindeksować adres URL za pomocą usługi Scrapy. Ale przekierowuje mnie do strony, która nie istnieje.Złomowanie - sposób zatrzymania przekierowania (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>
Problemem jest http://www.shop.inonit.in/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/pid-1275197.aspx istnieje, ale http://www.shop.inonit.in/mobile/Products/Inonit-Home-Decor--Knick-Knacks-Cushions/Shor-Sharaba/Andaz-Apna-Apna-Cushion-Cover/1275197 nie, więc robot nie może znaleźć tego. Zindeksowałem też wiele innych witryn, ale nigdzie indziej nie miałem tego problemu. Czy istnieje sposób, aby zatrzymać to przekierowanie?
Każda pomoc będzie mile widziana. Dzięki.
Aktualizacja: To jest moja klasa pająk
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
Dzięki za odpowiedzi! ale jestem trochę zdezorientowany, gdzie umieścić tę linię kodu? Próbowałem zastąpić start_request, ale daje mi błąd "Response" obiekt nie ma atrybutu "body_as_unicode" ". Czy możemy zwrócić przedmiot i zażądać w tym samym czasie? –
Możesz wywołać hxs = HtmlXPathSelector (odpowiedź) z przekierowaniem, które musisz przetestować response.status == 302 i wykonać inny rodzaj przetwarzania. W takim przypadku hxs nie powiedzie się, ponieważ response.body jest pusty dla statusu 302 –
Czy ktoś przetestował? nie działa z aktualną wersją scrapy, testowałem z ''handle_httpstatus_list': [404, 301]' tylko 404 działa –