亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從Python中的字符串中剝離HTML

從Python中的字符串中剝離HTML

藍山帝景 2019-06-18 16:05:53
從Python中的字符串中剝離HTMLfrom mechanize import Browserbr = Browser()br.open('http://somewebpage')html = br.response().readlines()for line in html:   print line在HTML文件中打印一行時,我試圖找到一種方法只顯示每個HTML元素的內容,而不是格式本身。如果它發現'<a href="whatever.com">some text</a>',它只會打印“一些文本”,'<b>hello</b>'打印“你好”等等。你會怎么做呢?
查看完整描述

5 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

我總是使用這個函數來去掉HTML標記,因為它只需要Pythonstdlib:

關于Python 2

from HTMLParser import HTMLParserclass MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

用于Python 3

from html.parser import HTMLParserclass MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.strict = False
        self.convert_charrefs= True
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def get_data(self):
        return ''.join(self.fed)def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

*這只適用于3.1。對于3.2或更高版本,您需要調用父類的依尼特功能。看見在Python3.2中使用HTMLParser


查看完整回答
反對 回復 2019-06-18
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

我沒有想過它會錯過多少案例,但是您可以做一個簡單的正則表達式:

re.sub('<[^<]+?>', '', text)

對于那些不理解regex的人,這將搜索一個字符串。<...>,其中的內部內容由一個或多個(+)不是<..這個?意味著它將匹配它能找到的最小字符串。例如,給出<p>Hello</p>,它會匹配的<'p></p>分別與?..如果沒有它,它將匹配整個字符串。<..Hello..>.

如果非標簽<出現在html中(例如。2 < 3),它應該寫成轉義序列&...總之所以^<可能沒必要。


查看完整回答
反對 回復 2019-06-18
  • 5 回答
  • 0 關注
  • 918 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號