1

ウェブページを解析しています。1 つの目標は、すべての単語とその頻度を見つけることです。lxmlを使用しています

from lxml import html

my_string = open(some_file_path).read()

tree = html.fromstring(my_string)

text_no_markup = tree.text_content()

このようなものを見るでしょう a_wordconcatenated_to_another

a_word concatenated_to_another を期待していたとき

よく見ると、これは、a_word の後にある種の終了タグが続き、さらに html マークアップが続き、スペースや改行なしで concatenated_to_another が何らかのマークアップで囲まれている場合に発生するようです。

これを修正するために私が見つけた唯一の方法は、

my_modified_string = open(some_file_path).read().replace('>','> ')

したがって、すべての gt 記号を gt 記号とスペースに置き換えます。

これを達成するためのより堅牢な方法はありますか?

4

1 に答える 1

2

使用するitertext()

>>> my_string = '''
... <div>
...     <b>hello</b>world
... </div>
... '''
>>>
>>> root = html.fromstring(my_string)
>>> print root.text_content()

    helloworld

>>> for text in root.itertext():
...     text = text.strip()
...     if text: # to skip empty(or space-only) string
...         print text
...
hello
world
>>> print ' '.join(root.itertext())

     hello world
于 2013-08-27T16:10:08.033 に答える