2
私は掻き集めようとしているウェブサイトを持っていますが、私は読書をしていくつかの進歩を遂げました。それは厄介なサイトだが、重要な部分は、次のようになります。lxml、python、.tailでHTMLを解析すると、<br>タグで区切られます。
<h1>
<b>DESCRIPTOR1: </b>
" important content "
<br>
<b>DESCRIPTOr2: </b>
" important content"
<hr>
</h1>
<b>Title1</b>
" A lot of important text"
<br>
<br>
<b>Title2</b>
"A lot of important text"
<br>
<br>
<b>Title3</b>
<br>
"1. List of text pertaining to Title3 "
<br>
"2. List of items for Title 3"
<br>
"3. the number of listed items is variable for every page"
<br>
"4. Sometimes no list at all"
<br>
<br>
<b> Next Title: </b>
....and so on
今、私は私がタイトル3に到達したとき、私の最終的な結果は以外になりたいものにかなり近い取得することができますし、コンテンツの前に<br>
がありますそれは、これは私がそれに近づいていますどのようにあるタイトル3に行く:
import lxml.html
htmltree = lxml.html.parse('sample.html')
items = htmltree.xpath('//*[@id="sampletext"]/b')
for node in items:
print (node.text.strip())
print node.tail
今私の2つの問題は、(1):私は.tail's
から空白を取り除くことができず、(2):私は「None」を取得していません次の要素の前に.tail
がなく、<br>
であるため、Title3のために返されました。理想的には、次のIdentifier-Tag(この場合は<b>
)に到達するまで、要素タグの間にないテキストを追加することができます。希望は意味をなさない。すべてのポインタをお願いしますか?
ありがとうございます。私はそれを完全に理解していませんが(まだ)努力しています。プリントラインも私にとって混乱しています。これは、ブレークで区切られていても、次の 'b'要素まですべてが欲しい場合にはうまくいくが、その他のテキストではなく 'b'の直後に即時のものがほしい場合がある。私は番号がついたリストであるときに 'br'を無視しながら、次の 'b'まですべてを欲しいだけです。それを行う簡単な方法は? –