如何去除html源码中的标签?

我尝试去抓取糗事百科。

Request=urllib.request.Request(url=url,headers=headers)
response=urllib.request.urlopen(Request).read()
raw_data=response.decode('utf-8')

这里是可以出现html源码的

soup=BeautifulSoup(raw_data)
content=soup.find_all('div', {'class':'content'})

这里可以提取出

<div 'class'='content'>
xxxxx
</div>

这样的内容的如果我想去除

<div 'class'='content>
</div>

我该怎么做,我尝试的网上的一种方法但是报错

content=[s.extract() for s in content('div')]

报错

TypeError: 'ResultSet' object is not callable
阅读 10.8k
6 个回答
新手上路,请多包涵
//取得网页的文本(去掉CSS HTML JavaScript脚本等)
        public String GetText(String strTemp, int lengthlimit)
        {
            strTemp = System.Text.RegularExpressions.Regex.Replace(strTemp, "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>", "");
            string str2Temp = System.Text.RegularExpressions.Regex.Replace(strTemp, "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>", "");
            string str3Temp = System.Text.RegularExpressions.Regex.Replace(str2Temp, "<[^>]+>", "");
            //return System.Text.RegularExpressions.Regex.Replace(str3Temp, "", "");
            if (lengthlimit != 0)
            {
                if (str3Temp.Length >= lengthlimit)
                {
                    str3Temp = str3Temp.Substring(0, lengthlimit);
                }
            }
            return str3Temp;
        }

用正则去提取标签里的内容

全部都提取后,采用string.replace来替换,这样应该也是可以做到一个蹩脚的方案

最好的方式还是用正则表达式

不知道问题什么意思?是只要里面的内容,还是不要里面的内容只要标签呢?
如果是内容的话,那bs有直接的方法:content[0].get_text(),你代码里面的content是一个结果集。
如果不要内容只要标签的话也好办,
假设full字符串为:

<div 'class'='content'>
xxxxx
</div>

text字符串为:"xxxxx"
那么直接用full.replace("xxxxx", '')去掉就好啦。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进