2016-04-02 21 views
0

Google Playstoreを削っています。Python - XPathを使用したWebスクラップ

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

私は、XPath、すなわち恐ろしい:)を使用して、クラスquoted-review内部の完全なテキストを抽出したい - :私は以下のようにHTMLテキストを(ユーザーのコメント)しました。いくつかの基本的なリトアニア語と絵を学ぼうとするのはとても役に立ちます。私はこのアプリを作った人からもっと学びたいと思っています。& lt; 3

は私たxPath

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

は、私は1つのアイテムとしてそれらの両方を望んリスト

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

を得ています。 PS:forループを使用してインデックス0と1を連結するようアドバイスしてください。 Xpathを使ってそれらを直接抽出してほしい。

2)//div[@class='review-text']/text() 利回りだけ

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

恐ろしい:)を逃しています。

私はBeautifulSoupを通してsoup.select('.quoted-review')[1].getText()を1つとして直接使用できますが、Xpathは使用できません。

何が間違っていますか? XPathのバージョン1.0(バージョンlxml実装していること)で

+0

XPath、 'lxml'を実行するのにあなたは何を使いますか? – har07

+0

@ har07 - はい... \ – PythonEnthusiast

答えて

1

、そうのような要素の効果的な文字列値を返すために、XPath string()関数を呼び出すことができます場合には、内側XPathは複数の要素を返すこと

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

注意を最初のものだけが考慮されます。複数の要素をサポートするために、正しく、あなたは、たとえば、いくつかのpythonコードを組み込む必要があります:

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

ちょうどあなたの情報のために、あなたはこの使用して、純粋なXPathの行うことができますので、XPath 2.0のサポートは、パス区切りの後string()を呼び出す:

//div[@class='review-text']/string() 
関連する問題