我正在嘗試關於頁面排名的項目。Python:從html文件中獲取和解析文本
我想讓它看起來像這樣的指數(字典):
的file1.html - > [貓,吃,食品,喝,牛奶],[file2.html,file3.html]
file2.html - > [[dog,barked,ran,away],[file1.html,file4.html]]
獲取鏈接很簡單 - 查找錨標籤。
我的問題是 - 我如何獲取文本?在HTML文件中的文本不提前任何標記中包含像<p>
感謝所有幫助
我正在嘗試關於頁面排名的項目。Python:從html文件中獲取和解析文本
我想讓它看起來像這樣的指數(字典):
的file1.html - > [貓,吃,食品,喝,牛奶],[file2.html,file3.html]
file2.html - > [[dog,barked,ran,away],[file1.html,file4.html]]
獲取鏈接很簡單 - 查找錨標籤。
我的問題是 - 我如何獲取文本?在HTML文件中的文本不提前任何標記中包含像<p>
感謝所有幫助
如果文本沒有包含在標籤中,那它真的是HTML嗎?
正如Amber所說,使用一些HTML解析器(如BeautifulSoup)可以更輕鬆地完成此任務。
下面的例子演示了一個用於返回標籤內文本的簡單方法。
此方法適用於任何標籤AFAIK。
>>> from BeautifulSoup import BeautifulSoup as bs
>>> html = '''
... <div><a href="/link1">link1 contents</a></div>
... <div><a href="/link2">link2 contents</a></div>
... '''
>>> soup = bs(html)
>>> for anchor_tag in soup.findAll('a'):
... print anchor_tag.contents[0]
...
link1 contents
link2 contents
除此之外,我可以想像,你想的一定期限多少次出現在一些HTML文檔的計數的字典。 defaultdict
是好的那種事:
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for anchor_tag in soup.findAll('a'):
... d[anchor_tag.contents[0]] += 1
...
>>> d
defaultdict(<type 'int'>, {u'link1 contents': 1, u'link2 contents': 1})
希望這給你一些想法與運行。如果遇到其他問題,請回來再打開另一個問題。
使用HTML解析器 - 像BeautifulSoup。
是的,我正在使用beautifulsoup,不幸的是,我無法解析沒有包含在任何標籤中的文本 – csguy11 2010-10-16 21:21:01