我们正在解析网页。一个目标是找到所有单词及其频率。我们一直在使用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后跟某种类型的close标签,然后是更多的html标记,然后没有任何空格或换行符时,会发生这种情况。在某些标记中会包含concatenated_to_another。
我能解决这个问题的唯一方法是
my_modified_string = open(some_file_path).read().replace('>','> ')
所以我用gt符号和空格替换所有gt符号。
有没有更强大的方法来实现这一目标?
答案 0 :(得分:2)
>>> 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