html
  • r
  • web-scraping
  • scrape
  • rvest
  • 2017-08-02 1 views 0 likes 
    0

    ich bin neu zu rvest. Wie extrahiere ich diese Elemente mit 2 Klassennamen oder nur 1 Klassennamen im Tag?rvest - kratzen 2 klassen in 1 tag

    Dies ist mein Code und Ausgabe:

    doc <- paste("<html>", 
          "<body>", 
          "<span class='a1 b1'> text1 </span>", 
          "<span class='b1'> text2 </span>", 
          "</body>", 
          "</html>" 
          ) 
    library(rvest) 
    read_html(doc) %>% html_nodes(".b1") %>% html_text() 
    #output: text1, text2 
    #what i want: text2 
    
    #I also want to extract only elements with 2 class names 
    read_html(doc) %>% html_nodes(".a1 .b1") %>% html_text() 
    # Output that i want: text1 
    

    Das ist meine Maschine spec:

    Betriebssystem: Windows 10.

    rvest Version: 0.3.2

    R version 3.3.3 (2017-03-06) 
    Platform: x86_64-w64-mingw32/x64 (64-bit) 
    Running under: Windows >= 8 x64 (build 9200) 
    

    Jeder kann helfen?

    Antwort

    1

    können Sie CSS-Selektor verwenden wie folgt:

    Select-Klasse enthält b1 nicht a1:

    read_html(doc) %>% html_nodes(".b1:not(.a1)") 
    # {xml_nodeset (1)} 
    # [1] <span class="b1"> text2 </span> 
    

    Oder das Attribut-Selektor:

    read_html(doc) %>% html_nodes("[class='b1']") 
    # {xml_nodeset (1)} 
    # [1] <span class="b1"> text2 </span> 
    

    Select-Klasse enthält beides:

    read_html(doc) %>% html_nodes(".a1.b1") 
    # {xml_nodeset (1)} 
    # [1] <span class="a1 b1"> text1 </span> 
    
    +0

    Danke! Für Ihre erste Lösung, was ist ': not()'? ist es 1 Syntax oder das ':' kann in Verbindung mit anderen Tags/Klassen/IDs verwendet werden? – addicted

    +1

    "nicht" bedeutet wörtlich. Das heißt, die Klasse sollte keine Klasse in der Klammer enthalten, ja Sie können sie mit dem Tag-Namen und der ID wie 'span.b1: not (.a1)' verwenden. Sie können [hier] (https://stackoverflow.com/questions/1028248/how-to-combine-class-and-id-in-css-selector) für weitere Informationen überprüfen. – Psidom

    +0

    Vielen Dank! Diese 3 Alternativen sind sehr hilfreich. – addicted

    Verwandte Themen