python从html中提取文本_使用Python从HTML中提取可读文本?

我知道像html2text,BeautifulSoup等的utils,但问题是他们也提取javascript并将其添加到文本中,因此很难将它们分开.

htmlDom = BeautifulSoup(webPage)

htmlDom.findAll(text=True)

交替,

from stripogram import html2text

extract = html2text(webPage)

这两个都提取了页面上的所有javascript,这是不受欢迎的.

我只是想要提取您可以从浏览器中复制的可读文本.

解决方法:

如果您想避免使用BeautifulSoup提取脚本标记的任何内容,

nonscripttags = htmlDom.findAll(lambda t: t.name != 'script', recursive=False)

会为你做到这一点,让root的直接子节点是非脚本标签(和一个单独的htmlDom.findAll(recursive = False,text = True)将获得直接子节点的字符串).你需要递归地做这件事;例如,作为发电机:

def nonScript(tag):

return tag.name != 'script'

def getStrings(root):

for s in root.childGenerator():

if hasattr(s, 'name'): # then it's a tag

if s.name == 'script': # skip it!

continue

for x in getStrings(s): yield x

else: # it's a string!

yield s

我正在使用childGenerator(代替findAll),这样我就可以让所有的孩子按顺序完成自己的过滤.

标签:python,html,text-extraction

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值