日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...

發布時間:2023/12/9 编程问答 27 豆豆

10011311341 呂濤、10011311356

李紅

目的:通過熟悉使用火車頭采集器,在網絡上采取3萬條笑話并進行排重,以此來熟悉web文本挖掘的一些知識。

過程:本次學習,主要分成兩個部分。第一部分是笑話文本的采集,第二部分是笑話排重。以下是具體過程:

第一部分 笑話抽取

火車頭采笑話基本流程:

新建分組?新建任務?采集網址設置?采集內容設置?抓數據。

一、新建分組及任務

根據需要設立“課程”分組,以便于以后學習過程中練習使用,又建立了子分組“笑話抽取”。本次采集笑話主要是兩個網站“中文幽默王”及“開心驛站”,由于不同的網站html各種功能框架不同,而不同框架結構的采集規則又不同,所以將其分成了兩個任務建立“開心驛站”和“中文幽默王”。如圖1所示

圖1 分組及任務

二、采集網址及內容規則設置

由于本次采集作為課程練習使用,所以不牽扯到發布,因此,任務編輯上面僅設置第一步“采集網址規則”和第二步“采集內容規則”,如圖2所示

圖2 編輯任務

下面學習過程介紹均以開心驛站為例敘述

第一步:采集網址規則

首先要先添加起始網址http://www.kxx.cc/ 接下來的笑話網址采集就分為兩種方式。

第一種就是在“添加開始采集地址”窗體中設置“批量/多頁”項,設置“等差數列”方式,即采集的笑話從第一頁到最后一頁,這些頁數是成公差為1的等差數列,如圖3所示

圖3 批量/多頁設置

將“開心驛站”上面各類笑話設置完全,效果圖如圖3所示

圖4 起始網址效果圖

當然,如果僅此設置的話,我們一頁只能采到一條笑話,實際上,“開心驛站”上面的一頁可以顯示16條笑話,這樣我們還要設置一下“多級網址采集規則”。可以手動分析頁面html格式,然后填寫規則,這里采用最簡單的可視化Xpath方式獲取地址。如圖5所示

圖5

Xpath方式獲取地址

我們可以看出多級網址獲取方式為get如圖6所示

圖6 多級網址設置效果圖

第二種就是不在設置“批量/多頁”,而是直接設置“多級網址獲取”,首先獲得“開心驛站”上面各個分類的默認打開地址。

例如“校園笑話”http://www.kxx.cc/xiaohua/list4-1.html,這些網址的獲取,我們同樣采用的是最簡單的可視化地址Xpath方式獲得。Xpath獲得的網址里面有可能不是我們想要的網址,比如list10-1和list13-1分別為圖片和視頻,所以我們可以進行“結果網址過濾”如圖7所示

圖7 結果網址過濾設置

接下來就是“列表分頁獲取”設置,這個就是對每個分類的默認頁進行下一頁的采集,根據html里面的格式,我們如圖8所示設置

圖8 列表分頁獲取設置

至于每一頁要采集到16條笑話的網址,這個就和第一種方式是一樣的。就此略過。

第二步 采集內容規則

首先我們要設計自己想要的記錄屬性,采集笑話,需要“標題”“內容”“分類”三個屬性,如圖9所示內容標簽定義

圖9 內容標簽定義

具體到各個標簽的規則定義如下圖10-13:

圖10 前后截取方式抽取標題

圖11

可視化抽取內容

需要注意的是,在內容抽取過程中可能會遇到一些html標簽殘留,或者是雙引號,感嘆號以及省略號等等不顯示,這時候我們可以根據需要進行html標簽排除和一些字符的替換。

圖12

可視化提取分類

圖13 規則測試

三、抓數據

通過以上“網址采集規則”和“內容采集規則”的設置,就可以開始任務了。經過一段時間,數據采集完成,我們可以對任務進行右單擊選擇“打開Data下任務文件夾”,就可以看到默認為Access的數據文件,當然也可以轉換為Excel格式。由于排重的時候我們是以Excel格式進行數據輸入的,所以我們將其轉換為Excel格式。

第二部分 笑話排重

算法思想:本次笑話排重,主要是從內容上判斷。采用MD5摘要算法,我們選取第一個句話前后7個字符進行MD5碼運算,就是中文“。”和英文“.”前面4個后面兩個再加本身7個字符進行MD5運算,沒有中文句號和英文句號的暫時定為不重復。然后對比比每條笑話的前七個字符的MD5碼。根據“select

*,count(distinct Md5)from mo1 group by Md5”將和現有的笑話重復的笑話排除掉。

算法描述:MD5對以512位為單位的輸入進行變換最終以32位為單位4個的壓縮信息組輸出。根據運算結果的唯一性,我們可以每條笑話的第一個句號的前7個字符進行相同MD5運算,比對之后進行確認是否相同。

MD5過程描述如圖14

圖14 MD5過程

算法實現:

1、input

import MySQLdb

import xlrd

conn = MySQLdb.connect(host='localhost' , user = 'root'

,passwd='root' ,db = 'joke' ,use_unicode=True

,charset='utf8')

cursor = conn.cursor()

data = xlrd.open_workbook('E:\joke1.xls')

table = data.sheets()[0]

cursor.execute("select *,count(distinct Md5)from mo1 group by

Md5;")

rows = cursor.fetchall()

for row in rows:

k = row[0]

a =

int(table.cell(k,0).value)

b =

table.cell(k,1).value

c =

table.cell(k,2).value

d =

table.cell(k,3).value

e =

table.cell(k,4).value

f =

table.cell(k,5).value

g =

table.cell(k,6).value

sql = "INSERT INTO jo1

values(%s,%s,%s,%s,%s,%s,%s)"

cursor.execute(sql,(a,b,c,d,e,f,g))

cursor.close()

conn.commit()

2、MD5算法代碼實現

# -*- coding: UTF-8 -*-

import xlrd

import re

import hashlib

import MySQLdb

data = xlrd.open_workbook('E:\joke1.xls')

table = data.sheets()[0]

conn = MySQLdb.connect(host='localhost' , user = 'root'

,passwd='root' ,db = 'joke' ,use_unicode=True

,charset='utf8')

cursor = conn.cursor()

for n in range(1,table.nrows):

a =

table.cell(n,4).value

print n

md

=''

for i in

range(len(a)):

s = ''

if a[i] == u'.':

print

a[i]

if i ==

len(a)-1:

j = len(a)

elif i ==

len(a)-2:

j = len(a)

else:

j = i+3

for k in

range(j-7,j):

s = s+a[k]

m =

hashlib.md5(s.encode("utf8"))

md =

m.hexdigest()

break

elif a[i] == u'。':

print

a[i]

if i ==

len(a)-1:

j = len(a)

elif i ==

len(a)-2:

j = len(a)

else:

j = i+3

for k in

range(j-7,j):

s = s+a[k]

m =

hashlib.md5(s.encode("utf8"))

md =

m.hexdigest()

break

if md == '':

md = str(n)

sql = "INSERT INTO mo1

values(%s,%s)"

cursor.execute(sql,(n,md))

cursor.close()

conn.commit()

報告總結

本次課程作業進行過程當中,遇到了很多問題,有些解決了有些目前還沒有,火車頭是門學問,各種規則的書寫學習路還很漫長,在以后的學習過程中慢慢積累經驗。

排重的算法上也還有不足,在今后的學習當中應該再接再厲。

總之,本次課程學習,學到了很多東西。特別是在學習方法上,自己吃不透的地方可以向別人請教,可以通過別的渠道獲取知識。學習是個任道重遠的事情,自己的能力也有觸及不到的地方,日后的工作也會更多的依賴團隊的合作,所以,要更加注重合作的重要性。

總結

以上是生活随笔為你收集整理的火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。