2016-04-02 20 views
0

Google Playstore'u kazıyorum. Ben aşağıdaki gibi bir HTML metin (kullanıcının yorum) bıraktık: -Python - XPath kullanarak Web Çizgisi

<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> 

Ben XPath kullanarak sınıfın quoted-review içine tam metnini, yani Müthiş :) ayıklamak istiyorum. Bazı temel Litvanya ve resimleri öğrenmeye çalışmak çok faydalıdır. Bu uygulamayı kimin oluşturduğundan daha fazlasını öğrenmek isterim .. & lt; 3.

ardından

benim xPath

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

Ben tek bir öğe olarak her ikisi istediğiniz bir liste

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

verir bulunmaktadır. PS: Lütfen for döngüsünü kullanarak 0 ve 1 dizinlerini birleştirmek için bana tavsiyede bulunmayın. Onları Xpath kullanarak doğrudan bir tane olarak ayıklamak istiyorum.

2) //div[@class='review-text']/text() verimler sadece

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

Korku :) kaçırılmaz.

soup.select('.quoted-review')[1].getText() numaralı telefonu kullanarak BeautifulSoup aracılığıyla doğrudan Xpath kullanmadığınız için kullanabiliyorum.

Ne yapıyorum? , Sen şöyle bir elementin etkili dize değeri döndürmek için XPath string() işlevini çağırabilirsiniz XPath versiyonda

+0

XPath, lxml'yi çalıştırmak için ne kullanıyorsunuz? – har07

+0

@ har07 - Evet ... \ – PythonEnthusiast

cevap

1

1,0 (lxml uygular o sürümü):

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

Bildirim durumunda iç XPath birden fazla öğesi döndürür, sadece ilk dikkate alınacaktır. doğru birden çok öğe desteklemek için, örneğin, bazı piton kodları dahil etmek gerekir:

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

Bilginiz, XPath, bu kullanarak saf XPath yapmak, böylece yol ayırıcı sonra string() çağırma 2.0 destekler için:

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