2016-04-02 16 views
0

Ich kratze Google Playstore. Ich habe einen HTML-Text (Benutzer-Kommentare) wie folgt: -Python - Webscraping mit XPath

<div class="quoted-review"> 
    <div class="review-text"> <span class="review-title">Awesome :)</span> Trying to learn some basic Lithuanian and pictures are very helpful. I'd love to learn more from who created this app.. &amp;lt;3 
     <div class="paragraph-end details-light"></div> 
    </div> 
</div> 

ich den kompletten Text in Klasse quoted-review XPath verwenden, dh Super :) extrahieren möge. Der Versuch, einige grundlegende litauische und Bilder zu lernen, sind sehr hilfreich. Ich würde gerne mehr darüber erfahren, wer diese App erstellt hat. & lt; 3.

Im Folgenden sind meine xPath

1) //div[@class='quoted-review review-text']/span[@class='review-title']/text()|//div[@class='quoted-review review-text']/text()

eine Liste ergibt

[ 
'Awesome :)' , 
'Trying to learn some basic Lithuanian and pictures are very helpful. I'd love to learn more from who created this app..' 
] 

ich beide als ein Einzelteil wünschen. PS: Bitte rate mir nicht, Index 0 und 1 mit einer for-Schleife zu verketten. Ich möchte, dass sie sie direkt mit Xpath extrahieren.

2) //div[@class='review-text']/text() Ausbeuten nur

[ 
'Trying to learn some basic Lithuanian and pictures are very helpful. I'd love to learn more from who created this app..' 
] 

Super :) verpasst.

Ich bin in der Lage, es durch BeautifulSoup mit soup.select('.quoted-review')[1].getText() direkt als eins, aber nicht mit Xpath.

Was mache ich falsch?

+0

Was verwenden Sie zum Ausführen des XPath, 'lxml'? – har07

+0

@ har07 - Ja ... \ – PythonEnthusiast

Antwort

1

In XPath Version 1.0 (Version dass lxml Arbeitsgeräte), Sie XPath string() Funktion aufrufen kann wie so wirksam Zeichenfolge Wert eines Elements zurück:

string(//div[@class='review-text']) 

bemerken, dass das innere XPath mehrere Elemente im Fall zurückgibt, nur der erste wird berücksichtigt. Zur Unterstützung mehrerer Elemente korrekt müssen Sie einige Python-Codes zu übernehmen, zum Beispiel:

result = [div.xpath('string()') for div in \ 
      root.xpath('//div[@class='review-text']')] 

Nur zur Information, XPath 2.0 unterstützt string() nach Pfadseparator Aufruf, so dass Sie diese mit reinem XPath tun können:

//div[@class='review-text']/string() 
Verwandte Themen