Python使用爬蟲獲取文本內容時,經常會發現獲取到的文本包含了HTML註釋,這時想要去除這些註釋,就需要一些方法,自己寫邏輯顯然比較麻煩而且效果不穩定,這裏主要用到了w3lib庫的html模塊
1.remove_tags()
移除指定標籤,不移除內部文本
from w3lib import html
doc = '''
<div>
<a>我是超鏈接</a>
<h1>我是標題</h1>
</div>
'''
result = html.remove_tags(doc)
print(result)
PS D:\workspace\github\python\python-demo\util\html> python .\tags.py
我是超鏈接
我是標題
可以看到所有的標籤都被移除了,只剩下標籤下的文本節點,包括了空白
可以使用參數which_ones來指定要移除的標籤
from w3lib import html
doc = '''
<div>
<a>我是超鏈接</a>
<h1>我是標題</h1>
</div>
'''
result = html.remove_tags(doc,which_ones=('div','a'))
print(result)
PS D:\workspace\github\python\python-demo\util\html> python .\remove_tags.py
我是超鏈接
<h1>我是標題</h1>
PS D:\workspace\github\python\python-demo\util\html>
看到指定了div、a標籤都被移除了
2.remove_tags_with_content()
移除標籤已經其內容
from w3lib import html
doc = '''
<div>
<a>我是超鏈接</a>
<h1>我是標題</h1>
我是div的內容
</div>
'''
result = html.remove_tags_with_content(doc,which_ones=('h1','a'))
print(result)
PS D:\workspace\github\python\python-demo\util\html> python .\remove_tags_with_content.py
<div>
我是div的內容
</div>
可以看到a、h1標籤的文本內容都被移除了,但是空白還在,而且測試中發現,如果直接移除外層標籤div,則內部標籤及其內容都會被完全移除
3.remove_comments()
移除HTML註釋
from w3lib import html
doc = '''
<div>
哈哈哈哈
<!--我是網頁註釋-->
</div>
'''
result = html.remove_comments(doc)
print(result)
PS D:\workspace\github\python\python-demo\util\html> python .\remove_comments.py
<div>
哈哈哈哈
</div>
除了註釋被移除了,其他的都還在
4.remove_entities
移除所有HTML實體,實際上是進行替換,將HTML實體替換爲原本的字符
from w3lib import html
doc = '''
大於號 >
小於號 <
且 &
引號 "
單引號 '
分 ¢
磅 £
元 ¥
歐元 €
小節 §
版權 ©
註冊商標 ®
商標 ™
乘號 ×
除號 ÷
'''
result = html.remove_entities(doc)
print(result)
PS D:\workspace\github\python\python-demo\util\html> python .\remove_entities.py
大於號 >
小於號 <
且 &
引號 "
單引號
分 ¢
磅 £
元 ¥
歐元 €
小節 §
版權 ©
註冊商標 ®
商標 ™
乘號 ×
除號 ÷