2017-07-06 3 views
0

Ich möchte Daten von einer Website crawlen. Ich benutze diesen CodeErhalten Sie Text aus mehreren Klassen in scrapy

import scrapy 

class KamusSetSpider(scrapy.Spider): 
    name = "kamusset_spider" 
    start_urls = ['http://kbbi.web.id/abadi'] 

    def parse(self, response): 
     SET_SELECTOR = '.tur highlight' 
     for brickset in response.css(SET_SELECTOR): 
      yield { 
       'name': brickset.css(SET_SELECTOR).extract_first(), 
      } 

und das ist das Element untersuchen:

enter image description here

Ich möchte jeden Text im roten Oval zu bekommen, wie mengabadi, mengabadikan, etc. Es gibt mehrere Klasse in das 'b' tag => tur highlight. Aber ich habe kein Ergebnis. enter image description here

Was ist das Problem? Wie man es löst? Ich habe meinen Code werden das ändern:

def parse(self, response): 
     for kamusset in response.css("div#d1"): 
      text = kamusset.css("div.sub_17 b.tur.highlight::text").extract() 
      print(dict(text=text)) 

aber immer noch nicht funktioniert. Es gibt null zurück.

+0

Der Wähler sollte '‘ .tur.highlight'' ... –

Antwort

1

Selektor .tur highlight bedeutet - Elemente highlight in allen Elementen mit Klasse tur auswählen.

Um Elemente mit mehreren Klassen Verwendung Wähler zu wählen, ohne Leerzeichen :

SET_SELECTOR = '.tur.highlight' 
+0

Es tut mir leid, aber es funktioniert immer noch nicht. Ich kann nicht Text mengabadi, mengabaikan, etc. Warum ?? – RiefSapthana

+0

Denken Sie, dass die Daten über JS gerendert werden. Sie können scrapy splash verwenden, um das gerenderte HTML anzuzeigen. –

Verwandte Themen