A. [內附完整源碼和文檔] 基於python的新聞檢索系統
1 系統介紹
1.1 系統需求
新聞檢索系統:定向採集不少於 4 個中文社會新聞網站或頻道,實現這些網站新聞信息及評論信息的自動爬取、抽取、索引和檢索。本項目未使用 lucene,Goose 等成熟開源框架。
1.2 系統思路與框架
本系統總體的實現思路如圖 1 所示:
一個完整的搜索系統主要的步驟是:
對新聞網頁進行爬蟲得到語料庫
抽取新聞的主體內容,得到結構化的 xml 數據
內存式單遍掃描索引構建方法構建倒排索引,供檢索模塊使用
用戶輸入查詢,得到相關文檔返回給用戶
2 設計方案
2.1 新聞爬取
2.1.1 演算法簡述
該模塊針對搜狐,網易,騰訊三大主流新聞網站及官方的參考消息網站進行了新聞獲取。並基於其網站結構,設計了不同的爬取模式。由於網站架構兩兩相似,以下選取兩種類型的典型代表進行介紹:
(1)搜狐新聞
搜狐新聞除正常主頁外,存在隱藏的列表式新聞頁 , 如 http://news.sohu.com/1/0903/62/subject212846206.shtml 。
(2)網易新聞
可以將網易新聞及騰訊新聞歸結為一般類型的新聞主頁,我們採用了自新聞主頁開始的廣度優先的遞歸爬取策略。注意到新聞的正文頁往往是靜態網頁.html,因此,我們將網頁中出現的所有以.html 結尾的網頁的 URL 均記錄下來,在爬取到一定量時,進行一次去重。
對於一些不是新聞的錯分網頁,容錯處理即通過檢查新聞正文標簽
時會被剔除。
新聞正文頁中我們重點關注內容,時間,評論獲取。
2.1.2 創新點
實現了對新聞網頁動態載入的評論進行爬取,如搜狐新聞評論爬取
未藉助開源新聞爬取工具,自己實現了對新聞標題,正文,時間,評論內容,評論數目的高效爬取
2.2 索引構建
分詞,我們藉助開源的 jieba 中文分片語件來完成,jieba 分詞能夠將一個中文句子切成一個個詞項,這樣就可以統計 tf, df 了
去停用詞,去停詞的步驟在 jieba 分詞之後完成
倒排記錄表存儲,詞典用 B-樹或 hash 存儲,倒排記錄表用鄰接鏈表存儲方式,這樣能大大減少存儲空間
倒排索引構建演算法使用內存式單遍掃描索引構建方法(SPIMI),就是依次對每篇新聞進行分詞,如果出現新的詞項則插入到詞典中,否則將該文檔的信息追加到詞項對應的倒排記錄表中。
2.3 檢索模塊
2.3.1 檢索模式
(1)關鍵詞檢索
查詢即根據用戶輸入的關鍵字,返回其相應的新聞。首先根據用戶的查詢進行 jieba 分詞,記錄分詞後詞項的數量以字典形式進行存儲。
完整的源碼和詳細的文檔,上傳到了 WRITE-BUG技術共享平台 上,需要的請自取:
https://www.write-bug.com/article/3122.html
B. 誰有新浪圖片新聞的源碼
這個我有研究,我搞的網站上也搞這個東西。很好用的,是FLASH+自定義的圖片和對應的文字的鏈接。最多可定義6組,用|隔開,將下面的代碼插入網頁中即可。
你只需改PICs links texts三個變數
也可以改
focus_width=flash寬度
focus_height=FLASH高度
text_height=文字高度,不想文字出現就設為0
<!-- flash滾動焦點圖 begin -->
<!--焦點圖開始-->
<script type="text/javascript">
<!--
var focus_width=260
var focus_height=164
var text_height=25
var swf_height = focus_height+text_height
var pics='http://image2.sina.com.cn/ty/.jpg|http://image2.sina.com.cn/ty/.jpg|http://image2.sina.com.cn/ty/.jpg|http://image2.sina.com.cn/ty/.jpg|http://image2.sina.com.cn/ty/.jpg|http://ad4.sina.com.cn/200510/31/35395_260x164.jpg'
var links='http://sports.sina.com.cn/z/06wceuroqua/|http://sports.sina.com.cn/z/06wceuroqua/|http://sports.sina.com.cn/z/06wceuroqua/|http://sports.sina.com.cn/z/saihei/|/z/05vbchampions/|http://casting11.allyes.com/main/adfclick?db=casting11^bid=103,1892,1898^cid=0,0,0^sid=2080^advid=51^camid=117^show=ignore^url=http://ad.sina.com.cn/minisite/nian_ci_an/index.html'
var texts='悲情土耳其慘遭淘汰|澳大利亞32年後重進世界盃|捷克順利沖進世界盃|友誼賽國足0-0戰平保加利亞|中國女排0-3完敗於美國|念慈庵枇杷糖與孫楠提醒您注意!'
document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+ focus_width +'" height="'+ swf_height +'">');
document.write('<param name="allowScriptAccess" value="sameDomain"><param name="movie" value="http://image2.sina.com.cn/bj/zonghe/pixviewer.swf"><param name="quality" value="high"><param name="bgcolor" value="#DADADA">');
document.write('<param name="menu" value="false"><param name=wmode value="opaque">');
document.write('<param name="FlashVars" value="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'">');
document.write('<embed src="http://image2.sina.com.cn/bj/zonghe/pixviewer.swf" wmode="opaque" FlashVars="pics='+pics+'&links='+links+'&texts='+texts+'&borderwidth='+focus_width+'&borderheight='+focus_height+'&textheight='+text_height+'" menu="false" bgcolor="#DADADA" quality="high" width="'+ focus_width +'" height="'+ swf_height +'" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'); document.write('</object>');
//-->
</script>
<!--焦點圖結束-->
<!-- flash滾動焦點圖 end -->