2010-08-19 22 views
0

Je suis très nouveau à Scrapy. Voici mon araignée pour ramper Twistedweb.Scraper web scrapy ne peut pas ramper lien

class TwistedWebSpider(BaseSpider): 

    name = "twistedweb3" 
    allowed_domains = ["twistedmatrix.com"] 
    start_urls = [ 
     "http://twistedmatrix.com/documents/current/web/howto/", 
    ] 
    rules = (
     Rule(SgmlLinkExtractor(), 
      'parse', 
      follow=True, 
     ), 
    ) 
    def parse(self, response): 
     print response.url 
     filename = response.url.split("/")[-1] 
     filename = filename or "index.html" 
     open(filename, 'wb').write(response.body) 

Lorsque j'exécute scrapy-ctl.py crawl twistedweb3, il est extrait uniquement.

En obtenant le contenu index.html, j'ai essayé d'utiliser SgmlLinkExtractor, il extrait les liens comme je m'y attendais mais ces liens ne peuvent pas être suivis.

Pouvez-vous me montrer où je vais mal? Supposons que je veux obtenir css, fichier javascript. Comment puis-je y parvenir? Je veux dire obtenir un site Web complet?

+0

Vous n'avez pas montré assez de code ici pour deviner quel est votre problème. Je vous suggère de compléter le tutoriel Scrapy et ensuite votre question sera soit elle-même soit vous serez capable d'expliquer le problème. http://doc.scrapy.org/intro/tutorial.html – msw

+0

J'ai suivi le tutoriel. J'ai un peu changé l'araignée comme vous pouvez le voir ci-dessus. – Iapilgrim

Répondre

4

rules l'attribut appartient à CrawlSpider .Utilisez class MySpider(CrawlSpider). En outre, lorsque vous utilisez CrawlSpider vous ne devez pas remplacer la méthode parse, à la place utiliser parse_response ou un autre nom similaire.

+0

Remerciez Rho. Vous me sauvez un jour. Cela fonctionne après avoir modifié comme vous l'avez suggéré – Iapilgrim