移除HTML标签获取全部文本的三种方法对比
'https://mengso.com/' > url =
> from renderer.utils import retry_get
> response = retry_get(url)
'utf-8') > string = response.content.decode(
from lxml import html
html.fromstring(string).text_content()
"\n\n萌搜 为小众而搜\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwindow.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\ngtag('config', 'UA-58427671-26');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n设为首页\n所有产品\n分享萌搜 SHARE\n服务条款\n关于我们\n不良信息举报\n广告投放\n\n\n\n\n\n皖ICP备18013804号-3\xa0/\xa0公安网备34150102000224\n\n© 2020 萌搜 mengso.com\xa0/\xa0违法举报\n\n\n\n\n$(document).ready(function(){ssl_pre();})\n\n"
这种方法有时候莫名其妙获取不到一些文本,比如深度嵌套的,遇到这种情况我一般就用下面的方法。
from w3lib.html import remove_tags
remove_tags(string)
"\n\n\n萌搜 为小众而搜\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nwindow.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\ngtag('config', 'UA-58427671-26');\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n设为首页\n所有产品\n分享萌搜 SHARE\n服务条款\n关于我们\n不良信息举报\n广告投放\n\n\n\n\n\n皖ICP备18013804号-3 / 公安网备34150102000224\n\n© 2020 萌搜 mengso.com / 违法举报\n\n\n\n\n$(document).ready(function(){ssl_pre();})\n\n\n"
这种方法基本可以满足需求了,但仍有让人不满意的地方,比如混入了许多 JavaScript 代码,因此我决定自己实现一个函数。
> from renderer.utils import rm_tags
'\n') > rm_tags(string,
'\n设为首页\n所有产品\n分享萌搜SHARE\n服务条款\n关于我们\n不良信息举报\n广告投放\n皖ICP备18013804号-3/公安网备34150102000224\n©2020萌搜mengso.com/违法举报\n'
> rm_tags(string)
'设为首页所有产品分享萌搜SHARE服务条款关于我们不良信息举报广告投放皖ICP备18013804号-3/公安网备34150102000224©2020萌搜mengso.com/违法举报'