亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

無(wú)關(guān)標(biāo)簽的一般長(zhǎng)文本網(wǎng)頁(yè)正文內(nèi)容抽取

Bryan / 3135人閱讀

摘要:無(wú)關(guān)標(biāo)簽的一般長(zhǎng)文本網(wǎng)頁(yè)正文內(nèi)容抽取一般的網(wǎng)頁(yè)內(nèi)容抽取需要針對(duì)特定的網(wǎng)站進(jìn)行特定的檢查定位正文標(biāo)簽,指定抽取規(guī)則。

無(wú)關(guān)標(biāo)簽的一般長(zhǎng)文本網(wǎng)頁(yè)正文內(nèi)容抽取
一般的網(wǎng)頁(yè)內(nèi)容抽取需要針對(duì)特定的網(wǎng)站進(jìn)行特定的檢查定位正文標(biāo)簽,指定抽取規(guī)則。但是如果需要抽取100個(gè)不同內(nèi)容結(jié)構(gòu)的網(wǎng)站正文,需要的就是100個(gè)不同的規(guī)則。
有沒(méi)有一種通用的內(nèi)容抽取呢??梢灾换诰W(wǎng)頁(yè)正文內(nèi)容的變化而變化的規(guī)則f(x).

本文實(shí)現(xiàn)的是針對(duì)于一般的長(zhǎng)文本正文類網(wǎng)站(博客、新聞、小說(shuō)類)實(shí)現(xiàn)的通用正文內(nèi)容抽取。像那種需要抽取的正文內(nèi)容C長(zhǎng)度與網(wǎng)頁(yè)內(nèi)容W長(zhǎng)度比例C/W<0.5的可能會(huì)出現(xiàn)不適用的情況。(比如正文是一句話幾個(gè)字,整個(gè)頁(yè)面內(nèi)容的文字長(zhǎng)度超過(guò)了正文的2倍,那最好使用DOM標(biāo)簽規(guī)則抽?。?/p>

以下的“網(wǎng)頁(yè)”均指長(zhǎng)文本類型的網(wǎng)頁(yè)
為什么抽取正文

一般的網(wǎng)頁(yè)正文都是屬于段落類型的文本,所屬標(biāo)簽不一,其他的無(wú)用信息(如網(wǎng)頁(yè)版權(quán)、站點(diǎn)通知、導(dǎo)航內(nèi)容等)也占據(jù)了一定的頁(yè)面內(nèi)容,如果單純的把網(wǎng)頁(yè)內(nèi)容文字全部抽取出來(lái),
這很簡(jiǎn)單,但是會(huì)夾雜很多的無(wú)用內(nèi)容,干擾太大,所以針對(duì)正文抽取得到頁(yè)面的真正有用信息是主要目的??梢岳谜膬?nèi)容進(jìn)行網(wǎng)頁(yè)相似度的計(jì)算。

怎么抽取正文

抽取正文要找到正文的分布特征,將爬取到的網(wǎng)頁(yè)去除所有標(biāo)簽,得到每一行的內(nèi)容后,可以根據(jù)(行號(hào),字符數(shù))制作圖表查看兩者的關(guān)聯(lián):
下圖是騰訊新聞一則新聞頁(yè)面的行號(hào)-行字?jǐn)?shù)關(guān)系圖表:

下圖是CSDN的兩則博文正文行號(hào)-行字?jǐn)?shù)關(guān)系圖表:

《中文編碼相關(guān),python處理gbk編碼的xml文件方法》:

《python抓取gb2312gbk編碼網(wǎng)頁(yè)亂碼問(wèn)題》:

下圖是segmentfault的一篇博文正文行號(hào)-行字?jǐn)?shù)關(guān)系圖表:

《解決 ScriptError的另類思路》:

可以看到,正文的內(nèi)容一般是連續(xù)行的塊,因此我們可以設(shè)置閾值來(lái)過(guò)濾一些非正文的干擾行,但是針對(duì)某些連續(xù)行并不是有效正文的情況,就需要看這個(gè)連續(xù)行組成的塊的總字符數(shù)。
如果字?jǐn)?shù)少于一個(gè)閾值,就不屬于正文,也就是正文的字符密度,由此可見(jiàn),正文可以基于連續(xù)行字符密度來(lái)進(jìn)行提取。

算法實(shí)現(xiàn)

假設(shè)我們已經(jīng)爬取了網(wǎng)頁(yè)內(nèi)容WebContent,并且將W的所有標(biāo)簽去除得到了純文本保留行格式的文字內(nèi)容LinesContent.接下來(lái):

#三個(gè)可控變量,自由調(diào)整使抽取達(dá)到理想效果
#連續(xù)行閾值:連續(xù)多少行則認(rèn)為是一個(gè)正文內(nèi)容塊
threshold = 5
#正文內(nèi)空行閾值:允許正文內(nèi)容 段落或正文行 之間有多少空行
gap = 3
#正文字符密度閾值:每一行的字符數(shù)達(dá)到多少則認(rèn)為屬于正文內(nèi)容
density  = 45


#********初始化設(shè)置#********
#保留抽取結(jié)果字典,格式:{<連續(xù)塊字符總數(shù)>:<塊文字內(nèi)容>,...}
results={}
#已經(jīng)達(dá)到前后連續(xù)的次數(shù)
comobo_num =0
#當(dāng)前連續(xù)塊的總字符數(shù)
combo_len = 0
#當(dāng)前連續(xù)空行數(shù)
combo_null=0
#當(dāng)前連續(xù)塊的文字內(nèi)容
combo_text = ""
#當(dāng)前行/前一行的字符數(shù)
pre_len = 0

for i in LinesContent:
    #當(dāng)前行非空
    if i.strip():
        pre_len = len(i)
        comobo_num += 1 
        combo_null = 0
        combo_len += pre_len
        #疊加非空行內(nèi)容到連續(xù)內(nèi)容中
        combo_text = combo_text+i+ os.linesep
        #針對(duì)單行文本情況
        if len(a)==1 and pre_len >= density*threshold:
            results[pre_len]=combo_text
    else:
        combo_null +=1
        #如果前一行非空
        if pre_len:
            #連續(xù)空行閾值判斷
            if combo_null > gap:
                #連續(xù)塊判斷
                if combo_len >= density*threshold 
                and comobo_num >= threshold:
                    results[combo_len]=combo_text
            else:
                continue
        #非正文連續(xù)塊則全部參數(shù)復(fù)位
        comobo_num = 0
        combo_len = 0 if combo_null > gap else combo_len
        pre_len = 0
        combo_text = "" if combo_null > gap else combo_text

經(jīng)過(guò)對(duì)多個(gè)長(zhǎng)文本類型網(wǎng)站的抓取抽取,正文抽取成功率達(dá)到了90%以上。

Todo

針對(duì)有圖片嵌入的正文抽取

連帶正文標(biāo)簽的抽取

正文格式的保存

源碼地址:GitHub

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/42697.html

相關(guān)文章

  • 持續(xù)更新免費(fèi)API,做一個(gè)API搬運(yùn)工

    摘要:為了方便廣大的開(kāi)發(fā)者,特此統(tǒng)計(jì)了網(wǎng)上諸多的免費(fèi),為您收集免費(fèi)的接口服務(wù),做一個(gè)的搬運(yùn)工,以后會(huì)每月定時(shí)更新新的接口。將長(zhǎng)段中文切詞分開(kāi)。 為了方便廣大的開(kāi)發(fā)者,特此統(tǒng)計(jì)了網(wǎng)上諸多的免費(fèi)API,為您收集免費(fèi)的接口服務(wù),做一個(gè)api的搬運(yùn)工,以后會(huì)每月定時(shí)更新新的接口。有些接口來(lái)自第三方,在第三方注冊(cè)就可以成為他們的會(huì)員,免費(fèi)使用他們的部分接口。 百度AccessToken:針對(duì)HTTP ...

    Shihira 評(píng)論0 收藏0
  • 淺聊SEO

    摘要:白帽是搜索引擎提倡的,也是一種良性競(jìng)爭(zhēng)。這當(dāng)然不被搜索引擎提倡,甚至于說(shuō)是頭疼的,還需要想辦法如何在搜索結(jié)果內(nèi)剔除掉那些頁(yè)面。影響搜索引擎對(duì)網(wǎng)站排名的合理和公正性。扁平化目錄層次網(wǎng)站層次既然要清晰,目錄最好不要超過(guò)三次分級(jí)。 SEO【search engine optimization】即搜索引擎優(yōu)化。 搜索引擎對(duì)用戶來(lái)說(shuō),就是搜東西,那他是怎樣展示關(guān)鍵詞的相關(guān)東西呢?這就需要有人每天...

    yedf 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<