2016-09-28 9 views
-2

Ich bin neu, Python Scrapy zu verwenden, und meine Scrapy-Version ist 1.1.3. Ich möchte eine Linkliste in this part auf https://www.wikipedia.org/ erhalten. Wie soll ich meinen Code ändern?Wie ändere ich meinen Code, um diese Links zu scrappen?

import scrapy 

class LinkSpider(scrapy.Spider): 
    name = "links" 
    start_urls = [ 
     'https://www.wikipedia.org/', 
    ] 

    def parse(self, response): 
     for link in response.xpath('//div/ul/li/a'): 
      yield{ 
       'link': link.extract() 
      } 

Oben ist mein Code in meinem Projektordner/Spinnen/spiders.py

Was ich erhalte, ist

[ 
{"link": "<a href=\"//de.wikipedia.org/\" lang=\"de\">Deutsch</a>"}, 
{"link": "<a href=\"//en.wikipedia.org/\" lang=\"en\" title=\"English\">English</a>"}, 
{"link": "<a href=\"//es.wikipedia.org/\" lang=\"es\">Espa\u00f1ol</a>"}, 
{"link": "<a href=\"//fr.wikipedia.org/\" lang=\"fr\">Fran\u00e7ais</a>"}, 
{"link": "<a href=\"//it.wikipedia.org/\" lang=\"it\">Italiano</a>"}, 
{"link": "<a href=\"//nl.wikipedia.org/\" lang=\"nl\">Nederlands</a>"}, 
{"link": "<a href=\"//ja.wikipedia.org/\" lang=\"ja\" title=\"Nihongo\">\u65e5\u672c\u8a9e</a>"}, 
{"link": "<a href=\"//pl.wikipedia.org/\" lang=\"pl\">Polski</a>"}, 
{"link": "<a href=\"//ru.wikipedia.org/\" lang=\"ru\" title=\"Russkiy\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439</a>"}, 
{"link": "<a href=\"//ceb.wikipedia.org/\" lang=\"ceb\">Sinugboanong Binisaya</a>"} 
] 

und ich erwarte, dass so etwas wie eine Liste enthält nur Links wie „// de.wikipedia.org/ ".

+0

Sie können Ihre Frage erklären, was Ihr Code verbessern tut das nicht stimmt, und was genau erwarten Sie es zu tun. –

Antwort

0

Sie müssen die XPath-Abfrage ändern, um den Wert des Attributs bekommen nicht der Tag

import scrapy 

class LinkSpider(scrapy.Spider): 
    name = "links" 
    start_urls = [ 
     'https://www.wikipedia.org/', 
    ] 

    def parse(self, response): 
     for link in response.xpath('//div/ul/li/a/@href'): 
      yield{ 
       'link': link.extract() 
      } 
0

Du paar Dinge fehlen,

  • Sie benötigen Attribut hinzufügen @href erhalten Der Wert
  • Ihr href-Wert auf dem ersten Index, Sie müssen Indexnummer hinzufügen.

    import scrapy 
    class LinkSpider(scrapy.Spider): 
        name = "links" 
        start_urls = ['https://www.wikipedia.org/', ] 
    
        def parse(self, response): 
         for link in response.xpath('//div/ul/li/a/@href'): 
          yield{'link': link.extract()[0]} 
    
Verwandte Themen