国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

深度剖析使用python抓取網(wǎng)頁正文的源碼

2020-02-23 05:27:38
字體:
供稿:網(wǎng)友

本方法是基于文本密度的方法,最初的想法來源于哈工大的《基于行塊分布函數(shù)的通用網(wǎng)頁正文抽取算法》,本文基于此進(jìn)行一些小修改。

約定:
       本文基于網(wǎng)頁的不同行來進(jìn)行統(tǒng)計(jì),因此,假設(shè)網(wǎng)頁內(nèi)容是沒有經(jīng)過壓縮的,就是網(wǎng)頁有正常的換行的。

       有些新聞網(wǎng)頁,可能新聞的文本內(nèi)容比較短,但其中嵌入一個(gè)視頻文件,因此,我會(huì)給予視頻較高的權(quán)重;這同樣適用于圖片,這里有一個(gè)不足,應(yīng)該是要根據(jù)圖片顯示的大小來決定權(quán)重的,但本文的方法未能實(shí)現(xiàn)這一點(diǎn)。

       由于廣告,導(dǎo)航這些非正文內(nèi)容通常以超鏈接的方式出現(xiàn),因此文本將給予超鏈接的文本權(quán)重為零。

       這里假設(shè)正文的內(nèi)容是連續(xù)的,中間不包含非正文的內(nèi)容,因此實(shí)際上,提取正文內(nèi)容,就是找出正文內(nèi)容的開始和結(jié)束的位置。     

步驟:

       首先清除網(wǎng)頁中CSS,Javascript,注釋,Meta,Ins這些標(biāo)簽里面的內(nèi)容,清除空白行。

       計(jì)算每一個(gè)行的經(jīng)過處理的數(shù)值(1)

       計(jì)算上面得出的每行文本數(shù)的最大正子串的開始結(jié)束位置

其中第二步需要說明一下:

       對(duì)于每一行,我們需要計(jì)算一個(gè)數(shù)值,這個(gè)數(shù)值的計(jì)算如下:

              一個(gè)圖片標(biāo)簽img,相當(dāng)于出現(xiàn)長(zhǎng)度為50字符的文本 (給予的權(quán)重),x1,

              一個(gè)視頻標(biāo)簽embed,相當(dāng)于出現(xiàn)長(zhǎng)度為1000字符的文本, x2

              一行內(nèi)所有鏈接的標(biāo)簽 a 的文本長(zhǎng)度 x3 ,

              其他標(biāo)簽的文本長(zhǎng)度 x4

              每行的數(shù)值 = 50 * x1其出現(xiàn)次數(shù) + 1000 * x2其出現(xiàn)次數(shù) + x4 – 8

        //說明, -8 因?yàn)槲覀円?jì)算一個(gè)最大正子串,因此要減去一個(gè)正數(shù),至于這個(gè)數(shù)應(yīng)該多大,我想還是按經(jīng)驗(yàn)來吧。

完整代碼

代碼如下:
#coding:utf-8
import re

def remove_js_css (content):
    """ remove the the javascript and the stylesheet and the comment content (<script>....</script> and <style>....</style> <!-- xxx -->) """
    r = re.compile(r'''<script.*?</script>''',re.I|re.M|re.S)
    s = r.sub ('',content)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 祁东县| 新源县| 鲁山县| 长海县| 囊谦县| 江门市| 垣曲县| 枣阳市| 宁武县| 东山县| 阿城市| 竹溪县| 融水| 靖边县| 高密市| 金堂县| 鄂尔多斯市| 万山特区| 安龙县| 彰化县| 大埔区| 灵武市| 沂源县| 镇安县| 潢川县| 巫山县| 武宣县| 防城港市| 桂平市| 普陀区| 炉霍县| 靖西县| 桦甸市| 宣威市| 广宗县| 康平县| 五原县| 凌海市| 临城县| 渝中区| 舞阳县|