2017-08-07 3 views
0

ceci est mon code simple d'araignée (juste commencé):Scrapy, Comment obtenir encore le contenu avec le statut 302 (redirection)

def start_requests(self): 
    urls = [ 
     'http://www.liputan6.com/search?q=bubarkan+hti&type=all', 
    ] 
    for url in urls: 
     yield scrapy.Request(url=url, callback=self.parse) 

def parse(self, response): 
    page = response.url.split("/")[-2] 
    filename = 'quotes-%s.html' % page 
    with open(filename, 'wb') as f: 
     f.write(response.body) 
    self.log('Saved file %s' % filename) 

avec le navigateur je peux accéder à l'URL 'http://www.liputan6.com/search?q=bubarkan+hti&type=all' normalement. Mais pourquoi cette scrapy je reçois 302 réponse, et je ne parviens pas à ramper la page ..

s'il vous plaît quelqu'un me dire, comment le résoudre ..

Répondre

0

On dirait que la page Web est attend des cookies, si ces cookies ne sont pas trouvés, il redirige vers la page d'index.

Je l'ai travail en ajoutant ces cookies: js_enabled=true; is_cookie_active=true;:

$scrapy shell "http://www.liputan6.com/search?q=bubarkan+hti&type=all" 
# redirect happens 
>[1]: response.url 
<[1]: 'http://www.liputan6.com' 
# add cookie to request: 
>[2]: request.headers['Cookie'] = 'js_enabled=true; is_cookie_active=true;' 
>[3]: fetch(request) 
# redirect no longer happens 
>[4]: response.url 
<[4]: 'http://www.liputan6.com/search?q=bubarkan+hti&type=all' 

Edit: Pour essayer de code:

def start_requests(self): 
    urls = [ 
     'http://www.liputan6.com/search?q=bubarkan+hti&type=all', 
    ] 
    for url in urls: 
     req= scrapy.Request(url=url, callback=self.parse) 
     req.headers['Cookie'] = 'js_enabled=true; is_cookie_active=true;' 
     yield req 

def parse(self, response): 
    # 200 response here 
+0

salut @Granitosaurus merci pour vos conseils, je lance scrapy à partir du script, http://scrapy.readthedocs.io/en/latest/topics/practices.html#run-scrapy-from-a-script où j'ajoute le code "cookie"? – rahmatheruka

+0

Salut à nouveau, j'ai essayé vos conseils, mais je reçois 2017-08-08 07:15:58 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirection (302) à de 2017-08-08 07:15:59 [scrapy.core.engine] DEBUG: Exploré (200) (referer: Aucun). Je reçois toujours la redirection 302 – rahmatheruka

+0

@rahmatheruka pouvez-vous essayer le code dans mon édition? – Granitosaurus