這篇文章將為大家詳細(xì)講解有關(guān)python抓取正文的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)公司專(zhuān)業(yè)為企業(yè)提供臨河網(wǎng)站建設(shè)、臨河做網(wǎng)站、臨河網(wǎng)站設(shè)計(jì)、臨河網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、臨河企業(yè)網(wǎng)站模板建站服務(wù),十多年臨河做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
python抓取正文的方法:
步驟:
首先清除網(wǎng)頁(yè)中CSS,Javascript,注釋?zhuān)琈eta,Ins這些標(biāo)簽里面的內(nèi)容,清除空白行。
計(jì)算每一個(gè)行的經(jīng)過(guò)處理的數(shù)值(1)
計(jì)算上面得出的每行文本數(shù)的最大正子串的開(kāi)始結(jié)束位置
其中第二步需要說(shuō)明一下:
對(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
實(shí)現(xià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)
r = re.compile(r'''<style.*?</style>''',re.I|re.M|re.S)
s = r.sub ('', s)
r = re.compile(r'''<!--.*?-->''', re.I|re.M|re.S)
s = r.sub('',s)
r = re.compile(r'''<meta.*?>''', re.I|re.M|re.S)
s = r.sub('',s)
r = re.compile(r'''<ins.*?</ins>''', re.I|re.M|re.S)
s = r.sub('',s)
return s
def remove_empty_line (content):
"""remove multi space """
r = re.compile(r'''^\s+$''', re.M|re.S)
s = r.sub ('', content)
r = re.compile(r'''\n+''',re.M|re.S)
s = r.sub('\n',s)
return s
def remove_any_tag (s):
s = re.sub(r'''<[^>]+>''','',s)
return s.strip()
def remove_any_tag_but_a (s):
text = re.findall (r'''<a[^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'''<img.*?>''',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'''<embed.*?>''',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):
cur_max = 0
for i in range(right, -1, -1):
glo_max -= values[i]
if abs(glo_max < 0.00001):
left = i
break
return left,right+1
def method_1 (content, k=1):
if not content:
return None,None,None,None
tmp = content.split('\n')
group_value = []
for i in range(0,len(tmp),k):
group = '\n'.join(tmp[i:i+k])
group = remove_image (group)
group = remove_video (group)
text_a,text_b= remove_any_tag_but_a (group)
temp = (text_b - text_a) - 8
group_value.append (temp)
left,right = sum_max (group_value)
return left,right, len('\n'.join(tmp[:left])), len ('\n'.join(tmp[:right]))
def extract (content):
content = remove_empty_line(remove_js_css(content))
left,right,x,y = method_1 (content)
return '\n'.join(content.split('\n')[left:right])關(guān)于python抓取正文的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
當(dāng)前標(biāo)題:python抓取正文的方法
瀏覽地址:http://chinadenli.net/article6/jhpsig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站營(yíng)銷(xiāo)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)