3d立體相冊特效html網頁代碼_新聞類網頁正文通用抽取器

項目起源

開發這個項目,源自于我在知網發現了一篇關于自動化抽取新聞類網站正文的算法論文——《基于文本及符號密度的網頁正文提取方法》

這篇論文中描述的算法看起來簡潔清晰,并且符合邏輯。但由于論文中只講了算法原理,并沒有具體的語言實現,所以我使用 Python 根據論文實現了這個抽取器。并分別使用今日頭條、網易新聞、游民星空、觀察者網、鳳凰網、騰訊新聞、ReadHub、新浪新聞做了測試,發現提取效果非常出色,幾乎能夠達到100%的準確率。

項目現狀

在論文中描述的正文提取基礎上,我增加了標題、發布時間和文章作者的自動化探測與提取功能。

最后的輸出效果如下圖所示:

6c18979af47b4c999917156cd57378a3

目前這個項目是一個非常非常早期的 Demo,發布出來是希望能夠盡快得到大家的使用反饋,從而能夠更好地有針對性地進行開發。

本項目取名為抽取器,而不是爬蟲,是為了規避不必要的風險,因此,本項目的輸入是 HTML,輸出是一個字典。請自行使用恰當的方法獲取目標網站的 HTML。

本項目現在不會,將來也不會提供主動請求網站 HTML 的功能。

如何使用

項目代碼中的GeneralNewsCrawler.py提供了本項目的基本使用示例。

  • 本項目的測試代碼在test文件夾中
  • 本項目的輸入 HTML 為經過 JavaScript 渲染以后的 HTML,而不是普通的網頁源代碼。所以無論是后端渲染、Ajax 異步加載都適用于本項目。
  • 如果你要手動測試新的目標網站或者目標新聞,那么你可以在 Chrome 瀏覽器中打開對應頁面,然后開啟開發者工具,如下圖所示:
2bc6599162164c779b16cc855cdc6f6a

在Elements標簽頁定位到標簽,并右鍵,選擇Copy-Copy OuterHTML,如下圖所示

bd41abd833524249909638c20d5cf9a0
  • 當然,你可以使用 Puppeteer/Pyppeteer、Selenium 或者其他任何方式獲取目標頁面的JavaScript渲染后的源代碼。
  • 獲取到源代碼以后,通過如下代碼提取信息:
from GeneralNewsCrawler import GeneralNewsExtractorextractor = GeneralNewsExtractor()html = '你的目標網頁正文'result = extractor.extract(html)print(result)

對大多數新聞頁面而言,以上的寫法就能夠解決問題了。

但某些新聞網頁下面會有評論,評論里面可能存在長篇大論,它們會看起來比真正的新聞正文更像是正文,因此extractor.extract()方法還有一個默認參數noise_mode_list,用于在網頁預處理時提前把評論區域整個移除。

noise_mode_list的值是一個列表,列表里面的每一個元素都是 XPath,對應了你需要提前移除的,可能會導致干擾的目標標簽。

例如,觀察者網下面的評論區域對應的Xpath 為//div[@class="comment-list"]。所以在提取觀察者網時,為了防止評論干擾,就可以加上這個參數:

result = extractor.extract(html, noise_node_list=['//div[@class="comment-list"]'])

test文件夾中的網頁的提取結果,請查看result.txt。

已知問題

  1. 目前本項目只適用于新聞頁的信息提取。如果目標網站不是新聞頁,或者是今日頭條中的相冊型文章,那么抽取結果可能不符合預期。
  2. 可能會有一些新聞頁面出現抽取結果中的作者為空字符串的情況,這可能是由于文章本身沒有作者,或者使用了已有正則表達式沒有覆蓋到的情況。

Todo

  • 使用一個配置文件來存放常量數據,而不是直接 Hard Code 寫在代碼中。
  • 允許自定義時間、作者的提取Pattern
  • 自動識別新聞列表頁
  • 優化內容提取速度
  • 測試更多新聞網站
  • ……

交流溝通

  • 項目地址:https://github.com/kingname/GeneralNewsExtractor

轉載自原文:https://www.cnblogs.com/xieqiankun/p/generalnewsextractor.html

作者:青南

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ubuntu14.04安裝 R16 Tina Linux SDK

第一步:由于是14.04系統所以這樣$sudo -i $cd /etc/apt/sources.list.d $echo "deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse" > ia32-libs-raring.list $apt-get update $apt-get install ia32-libs $r…

分答

用戶在分答上可以自我介紹或描述擅長的領域,設置付費問答的價格,其他用戶感興趣就可以付費向其提問。分答的收入分配機制增加了信息的價值,分答中信息接收者被區分成了兩種身份。首先提問的人是一種付費懸賞模式,當回答完畢內容沉…

字節數組轉換為圖片_每日一課 | Python 3 TypeError:無法將“字節”對象隱式轉換為str...

將Python 2套接字示例轉換為Python 3whois.py import sysimport sockets socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(("whois.arin.net", 43))s.send((sys.argv[1] "\r\n").encode())response ""while True: data s.re…

php版redis插件,SSDB數據庫,增強型的Redis管理api實例

php版redis插件,SSDB數據庫,增強型的Redis管理api實例 SSDB是一套基于LevelDB存儲引擎的非關系型數據庫(NOSQL),可用于取代Redis,更適合海量數據的存儲。另外,rocksdb是FB在LevelDB的二次開發版本,因此也存…

加速度計和陀螺儀數據融合

本帖翻譯自 IMU(加速度計和陀螺儀設備)在嵌入式應用中使用的指南。這篇文章主要介紹加速度計和陀螺儀的數學模型和基本算法,以及如何融合這兩者,側重算法、思想的討論介紹本指南旨在向興趣者介紹慣性MEMS(微機電系統&a…

循環嵌套練習題

//BOSS://讓用戶輸入一個奇數,打印菱形,最長的行內容個數為用戶輸入的個數,并且由英文字母拼接而成//比如用戶輸入了7// A// ABA// ABCBA// ABCDCBA// ABCBA// ABA// A//1、接收并判斷用戶輸入的是不是數字 try{#region 解法一…

python leetcode_leetcode 介紹和 python 數據結構與算法學習資料

for (剛入門的編程)的高中 or 大學生leetcode 介紹leetcode 可以說是 cs 最核心的一門“課程”了,雖然不是大學開設的,但基本上每一個現代的高水平的程序員都修過這門“課程”(或者類似的課程,比如數據結構…

平衡小車卡爾曼濾波算法

最近研究STM32的自平衡小車,發現有兩座必過的大山,一為卡爾曼濾波,二為PID算法。 網上看了很多關于卡爾曼濾波的代碼,感覺寫得真不咋地。一怒之下,自己重寫,不廢話,貼代碼 [pre lang"C&quo…

IOS 為UILabel添加長按復制功能

IOS 為UILabel添加長按復制功能 在iOS中下面三個控件,自身就有復制-粘貼的功能: 1、UITextView 2、UITextField 3、UIWebView UIKit framework提供了幾個類和協議方便我們在自己的應用程序中實現剪貼板的功能。 1、UIPasteboard:我們可以向其…

navicat 的查詢功能

navicat的查詢的位置在&#xff1a; 在編輯器界面寫代碼&#xff0c;代碼完成后點左上角的運行。 代碼&#xff1a; create&#xff08;創建&#xff09; table&#xff08;一個表&#xff09; <xxx>尖括號內的內容必填——我要創建并查詢一個名叫做xxx的表 &#xff08…

c++ sleep函數_Linux 多線程應用中如何編寫安全的信號處理函數

關于代碼的可重入性&#xff0c;設計開發人員一般只考慮到線程安全&#xff0c;異步信號處理函數的安全卻往往被忽略。本文首先介紹如何編寫安全的異步信號處理函數&#xff1b;然后舉例說明在多線程應用中如何構建模型讓異步信號在指定的線程中以同步的方式處理。Linux 多線程…

css特殊情況

如果一個父級div和一個子級div&#xff0c;要給父級div加&#xff08;opacity&#xff09;透明度那子級div也會繼承父級元素的透明度。那給父級元素加透明度就不用opacity加透明度&#xff0c;使用background:rgba(120,120,120,0.7);實現效果&#xff0c;r,g,b分別代表紅&#…

CoreAnimation (CALayer 動畫)

CoreAnimation基本介紹&#xff1a; CoreAnimation動畫位于iOS框架的Media層CoreAnimation動畫實現需要添加QuartzCore.FrameworkCoreAnimation基本上是LayerAnimationCoreAnimation分類&#xff1a; CoreAnimation作用&#xff1a; CoreAnimation CALayer基本介紹 CALayer的常…

匯編為什么分段執行總是執行不了_iOS匯編教程(六)CPU 指令重排與內存屏障...

系列文章iOS 匯編入門教程(一)ARM64 匯編基礎iOS 匯編入門教程(二)在 Xcode 工程中嵌入匯編代碼iOS 匯編入門教程(三)匯編中的 Section 與數據存取iOS 匯編教程(四)基于 LLDB 動態調試快速分析系統函數的實現iOS 匯編教程(五)Objc Block 的內存布局和匯編表示前言具有 ARM 體系…

GD32 使用stm32 固件庫

1、 系統 1) 晶振起振區別 描述&#xff1a;啟動時間&#xff0c;GD32 與STM32 啟動時間都是2ms&#xff0c;實際上GD 的執行效率快&#xff0c;所以ST 的HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)是2ms&#xff0c;但是這個宏定義值在GD 上時間就更加短了&#xff0c;所以要加大…

干將莫邪

干將莫邪也為凡鐵鑄成&#xff0c;只是善加鍛造、融入心神&#xff0c;而成上古神兵。寶劍從來都是雙刃&#xff0c;正邪之道&#xff0c;存乎一心。

js反混淆還原工具_SATURN反混淆框架

本文為看雪論壇精華文章看雪論壇作者ID&#xff1a;夢野間摘要&#xff1a;近幾年&#xff0c;軟件的混淆強度一直在不斷提升。基于編譯器的混淆已經成為業界事實上的標準&#xff0c;最近的一些論文也表明軟件的保護方式使用的是編譯器級別的混淆。在這篇文章中&#xff0c;我…

android 彈起鍵盤把ui頂上去的解決辦法

鍵盤輸入框上面的ui布局必須為Relative相對布局。然后設置 <activityandroid:name".activity.HomeActivity"Android:windowSoftInputMode"adjustPan|stateHidden"></activity>轉載于:https://www.cnblogs.com/zhaoleigege/p/5925831.html

python 多線程并發_尋找python大神!!!python如何多線程并發?

不是大神。嘗試回答一下。 首先解釋下什么叫做線程&#xff0c;什么叫做進程&#xff0c;在解釋這兩個概念前&#xff0c;我們還需要明白什么叫做GIL全局解釋器鎖。GIL 全局解釋器鎖&#xff1a; GIL(全局解釋器鎖&#xff0c;GIL 只有cpython有)&#xff1a;在同一個時刻&…

Nginx/Apache發大招

導讀網站程序的上傳目錄通常是不需要PHP執行解釋權限&#xff0c;通過限制目錄的PHP執行權限可以提網站的安全性&#xff0c;減少被攻擊的機率。下面和大家一起分享下如何在Apache和Nginx禁止上傳目錄里PHP的執行權限。 Apache下禁止指定目錄運行PHP腳本在虛擬主機配置文件中增…