抓取网页音频(如何从一个网页中提取出文章的正文正文内容?)

优采云 发布时间: 2021-10-07 21:35

  抓取网页音频(如何从一个网页中提取出文章的正文正文内容?)

  通常打开一个网页,除了文章的正文内容,通常还会有很多导航、广告等信息。这个博客的目的是解释如何从网页中提取文章的正文内容,同时转出其他不相关的信息。

  我们先来看看demo:

  此方法基于文本密度。最初的想法来自哈尔滨工业大学的《基于行块分布函数的通用网页文本提取算法》。本文在此基础上做了一些小的修改。

  习俗:

  本文根据网页的不同行进行统计。因此,假设网页的内容没有被压缩,则说明网页有正常的换行符。

  对于一些新闻页面,新闻的文字内容可能比较短,但是里面嵌入了一个视频文件。因此,我会给视频更高的权重;这也适用于图片。这里有一个缺点。它应该基于图片的大小。确定权重,但本文的方法未能做到这一点。

  因为广告,这些非文字内容的导航通常以超链接的形式出现,所以文字会给超链接的文字权重为零。

  假设正文的内容是连续的,不收录非文本内容。所以,其实提取正文就是找出正文的起止位置。

  步:

  首先清除网页中的CSS、Javascript、评论、Meta、Ins标签中的内容,清除空白行。

  计算每一行的处理值(1)

  计算上面得到的每行文本数的最大正子串的起止位置

  第二步需要说明:

  对于每一行,我们需要计算一个值,计算如下:

  一个图片标签img,相当于一个长度为50个字符(给定权重)x1的文本,

  嵌入的视频标签,相当于 1000 个字符的文本,x2

  一行 x3 中所有链接的标签 a 的文本长度,

  其他标签的文本长度 x4

  每行的值 = 50 * x1 它的出现次数 + 1000 * x2 它的出现次数 + x4-8

  //说明,-8 因为我们要计算一个最大的正子串,所以需要减去一个正数。至于这个数字应该有多大,我觉得还是用经验比较好。

  完整代码

<p>#coding:utf-8

import re

def remove_js_css (content):

""" remove the the javascript and the stylesheet and the comment content (.... and .... ) """

r = re.compile(r\'\'\'\'\'\',\'\',s)

return s.strip()

def remove_any_tag_but_a (s):

text = re.findall (r\'\'\']*>(.*?)</a>\'\'\',s,re.I|re.S|re.S)

text_b = remove_any_tag (s)

return len(\'\'.join(text)),len(text_b)

def remove_image (s,n=50):

image = \'a\' * n

r = re.compile (r\'\'\'\'\'\',re.I|re.M|re.S)

s = r.sub(image,s)

return s

def remove_video (s,n=1000):

video = \'a\' * n

r = re.compile (r\'\'\'\'\'\',re.I|re.M|re.S)

s = r.sub(video,s)

return s

def sum_max (values):

cur_max = values[0]

glo_max = -999999

left,right = 0,0

for index,value in enumerate (values):

cur_max += value

if (cur_max > glo_max) :

glo_max = cur_max

right = index

elif (cur_max

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线