如何使用 robobrowser 从 html 中去除标签
Posted
技术标签:
【中文标题】如何使用 robobrowser 从 html 中去除标签【英文标题】:How to strip tags from html with robobrowser 【发布时间】:2014-06-18 09:08:50 【问题描述】:我正在尝试http://robobrowser.readthedocs.org/en/latest/readme.html,这是一个基于美丽汤库的新 python 库。在一些帮助下,我在 django 应用程序中返回了一个 html 页面,但我不知道要剥离标签以只给我 text 。 我的 django 应用程序包含:
def index(request):
from django.utils.html import strip_tags
p=str(request.POST.get('p', False)) # p='https://www.yahoo.com/'
browser = RoboBrowser(history=True)
browser.open(p)
html = browser.response
stripped = strip_tags(html)
return HttpResponse(stripped )
当我查看输出的 html 时,我发现它与原始 html 相同。另外我认为robobrowser没有美汤的text()方法。
我也试过了(来自Python code to remove HTML tags from a string):
def remove_html_markup(s):
tag = False
quote = False
out = ""
for c in s:
if c == '<' and not quote:
tag = True
elif c == '>' and not quote:
tag = False
elif (c == '"' or c == "'") and tag:
quote = not quote
elif not tag:
out = out + c
return out
同样的结果!如何删除html标签并返回文本?
【问题讨论】:
【参考方案1】:我更喜欢使用bleach
。
下面是一些示例代码:
import Bleach
varName = ( bleach.clean( result.find_all( class_ = 'className' ),
strip = True
)
).strip( '[])' )
【讨论】:
【参考方案2】:BeautifulSoup 提供了 soup::get_text()
方法,用于从已解析的 HTML 文档中提取文本(有点令人困惑,这等效于 getText
方法和 text
属性)。您可以使用browser.parsed
访问当前页面的已解析 HTML。所以,要获取当前页面的纯文本,试试
text = browser.parsed.get_text()
【讨论】:
谢谢,很有帮助以上是关于如何使用 robobrowser 从 html 中去除标签的主要内容,如果未能解决你的问题,请参考以下文章
Python - 请求/RoboBrowser - ASPX POST JavaScript