2015-09-21 1 views
3

je veux ramper fils d'un forum allemand. http://www.musiker-board.de/Scrapy: Liens avec la suite Expression régulière

Les différents réels sont situés au sous-forums http://www.musiker-board.de/forum

A subforum: musiker-board.de/forum/subforumname

Les fils réels ont ces adresses: musiker-board.de/threads/threadname

Je veux suivre tous les liens de tous les sous-forums et extraire toutes les discussions en eux, mais l'URL des fils wouldnt correspondent à l'URL de démarrage plus.

Toutefois, si je sélectionne « musiker-board.de/ » comme URL de début il ne marche pas suivre les liens de tous les sous-forums.

Voici le code:

allowed_domains = ["musiker-board.de"] 
start_urls = ['http://www.musiker-board.de/forum/' 
      ] 
rules = (
     Rule(SgmlLinkExtractor(allow=[r'forum/\w+']), follow=True), 
     Rule(SgmlLinkExtractor(allow=[r'threads/\w+']), callback='parse_item'), 
     ) 

def parse_item(self, response): 
    #extract items... 

Que dois-je faire pour suivre toutes musiker-board.de/forum/subforum et d'extraire toutes musiker-forum.de/threads/threadname?

+0

Je réinstallée scrapy et maintenant il fonctionne en quelque sorte – user3811872

Répondre

1

Le code suivant (fabriqué à partir de votre extrait) semble bien fonctionner:

# -*- coding: utf-8 -*- 
import scrapy 
from scrapy.spiders import CrawlSpider, Rule 
from scrapy.linkextractors import LinkExtractor 

class Scrapy1Spider(CrawlSpider): 

    name = "musiker" 
    allowed_domains = ["musiker-board.de"] 
    start_urls = ['http://www.musiker-board.de/forum/' 
      ] 
    rules = (
     Rule(LinkExtractor(allow=[r'forum/\w+']), follow=True), 
     Rule(LinkExtractor(allow=[r'threads/\w+']), callback='parse_item'), 
    ) 

    def parse_item(self, response): 
     self.logger.info('response.url=%s' % response.url) 

Au moins il y a cette sortie (tronquée):

INFO: response.url=http://www.musiker-board.de/threads/peavey-ms-412-userthread.271458/ 
INFO: response.url=http://www.musiker-board.de/threads/peavey-5150-6505-etc-userthread.180295/ 
INFO: response.url=http://www.musiker-board.de/threads/marshall-ma-serie-user-thread.386428/ 
INFO: response.url=http://www.musiker-board.de/threads/h-k-metal-master-shredder-user-thread.250846/ 
INFO: response.url=http://www.musiker-board.de/threads/hughes-und-kettner-grandmeister-user-thread.553487/ 
INFO: response.url=http://www.musiker-board.de/threads/ibanez-userthread.190547/ 
INFO: response.url=http://www.musiker-board.de/threads/hughes-kettner-edition-blue-user-thread.209499/page-2 
INFO: response.url=http://www.musiker-board.de/threads/fender-prosonic-userthread.239519/ 
INFO: response.url=http://www.musiker-board.de/threads/fender-prosonic-userthread.239519/page-5 
INFO: response.url=http://www.musiker-board.de/threads/engl-steve-morse-signature-e656-user-thread.427802/page-2 
INFO: response.url=http://www.musiker-board.de/threads/engl-sovereign-user-thread.136266/page-20 
INFO: response.url=http://www.musiker-board.de/threads/engl-steve-morse-signature-e656-user-thread.427802/ 
INFO: response.url=http://www.musiker-board.de/threads/engl-sovereign-user-thread.136266/page-19 
INFO: response.url=http://www.musiker-board.de/threads/engl-sovereign-user-thread.136266/page-18 
INFO: response.url=http://www.musiker-board.de/threads/engl-invader-user-thread.248090/page-5 
INFO: response.url=http://www.musiker-board.de/threads/engl-sovereign-user-thread.136266/ 
INFO: response.url=http://www.musiker-board.de/threads/engl-invader-user-thread.248090/page-4 
INFO: response.url=http://www.musiker-board.de/threads/engl-invader-user-thread.248090/page-3 
INFO: response.url=http://www.musiker-board.de/threads/fender-cybertwin-userthread.305789/ 
INFO: response.url=http://www.musiker-board.de/threads/fenders-famose-farbwelten.454766/ 
+0

Bizarre, je n'ai que les liens explorés qui ont/forum en eux. Quelle version de Scrapy utilisez-vous? – user3811872

+1

J'ai utilisé pour ce 'Scrapy 1.0.1'. –