2017-12-14 5 views
0

リンクテキストを含め、Tweet divのフルテキストを1つの戻り値として取得するためのxpathセレクタとは何ですか?リンクテキストを含むxpathでdivテキストを取得

//*[contains(@class, 'tweet-text')][2]/text() 

上記の操作はリンクのないdivには有効ですが、ツイートにリンクが含まれている場合は最初の文字列セグメントが返されます。

+1

あなたがテストしているURLを共有することができます。

のPython + lxmlパーサーを使用して、上記のすべてを実証?その情報であなたの質問を更新してください。 – eLRuLL

答えて

0

上記のコードはリンクのないdivでうまくいきますが、ツイートにリンクが含まれていると最初の文字列セグメントが返されます。

これは、その/text()一部である - あなたは基本的にのみノードトップレベルのテキストの子に一致しています。要素内のすべてのテキストノードを一致させるには、任意のレベルで、あなたが行うことができます:ノードの「テキスト」の値を求めたときに、通常は自動的にHTMLパーサによって行わかかわら

//*[contains(@class, 'tweet-text')][2]//text() 

これはある - それらはすべてに行きます子ノードは再帰的に「テキスト」値を取得し、それらを結合します。

In [1]: from lxml.html import fromstring 

In [2]: html = """ 
    ...: <div> 
    ...:  div text here 
    ...:  <a href="https://google.com">link text</a> 
    ...: </div>""" 

In [3]: root = fromstring(html) 

In [4]: root.xpath('//div/text()') # <- No text of the a element 
Out[4]: ['\n div text here\n ', '\n'] 

In [5]: root.xpath('//div//text()') # <- We've got all the texts now 
Out[5]: ['\n div text here\n ', 'link text', '\n'] 

In [6]: root.xpath("//div")[0].text_content() # <- but this would that for us 
Out[6]: '\n div text here\n link text\n' 
関連する問題