97超碰碰碰_91热播_91国产免费视频_91视频合集_国产精品白丝jk白祙_国产精品久免费的黄网站

您現在所在的位置:首頁 >關于奇酷 > 行業動態 > 奇酷大數據培訓:海量數據抓取

奇酷大數據培訓:海量數據抓取

來源:奇酷教育 發表于:

  現如今大數據是個非常熱門的話題,大數據時代基于互聯網+的背景下,利用并行計算系統和分布式爬蟲系統,結合獨特的語義分析技術進行全

  現如今大數據是個非常熱門的話題,大數據時代基于互聯網+的背景下,利用并行計算系統和分布式爬蟲系統,結合獨特的語義分析技術進行全網數據抓取。圍繞著大數據的存儲、計算等方面展開。今天奇酷大數據培訓老師圍繞如何獲取垂直海量數據做六大詳細闡述。
大數據
  一.引言
  數據的作用不言而喻,在各行各業中,分門別類的數據為用戶的在線生活體驗提供了基本的素材,附近的餐館、即將上映的電影、最近熱門新聞等等能夠涵蓋我們生活的方方面面。同時所有的這一切也成就了今天在各個垂直領域諸如大眾點評、豆瓣、今日頭條等專業的公司。具體到搜索業務來說,無論是多么優秀的架構、精準的算法,最終也是需要依賴完備、準確、及時的數據作為落地基礎。
  從搜索業務來看,數據的價值主要體現在如下3個方面:
  1.直接提供搜索數據源。海量的數據為檢索提供了必不可少的素材。為此數據工作的一個基本目標是數據完備性。完備性可以從兩方面來理解,一方面是實體本身的完備,是0和1的關系,這是剛性需求,例如你搜索《來自星星的你》,如果沒有這部片子,那么結果顯然不能滿足用戶需求;另一方面是實體內部信息的完備,例如《來自星星的你》如果缺少了演員字段,那么你搜索“金秀賢”的時候可能依然得不到想要的結果。另外要提的一點是完備性通常還對時間有約束,熱點資訊、突發事件等如果不能在第一時間呈現,那么對于用戶來說都是個硬傷。
  2.改善相關性質量。干凈、精確的數據可以使得在相關性計算階段減少歧義,改善召回品質,互聯網中的數據魚龍混雜,各個網站的水平也是良莠不齊,不做去噪直接使用的話往往會適得其反。通過高質量的數據補充,對最終結果的排序也有良好的輔助作用。例如豆瓣的影評分數、熱度因子可以在視頻搜索中輔助結果排序,并且可以改善數據剛上架時由于點擊量缺失造成排序上不來這種冷啟動的過程。
  3.豐富搜索產品特性,滿足搜索直達需求。當數據完備、及時、準確之后就可以對數據做關聯聚合,在這個時候超越文本本身的各種語義特征、知識關聯等一些高階應用相繼涌現,大家常常聽到的Google的Knowledge Graph、Facebook的Graph Search以及百度知心搜索等都是建立在這一個基礎之上。將散落在互聯網上碎片化的知識整合起來形成直觀答案顯然是一種更“懂”你的方式。
  總的來說,數據獲取工作主要圍繞快、準、全三個要素以及一個高階的關聯需求展開。今天重點分析數據如何發現、抓取、更新等方面做一個介紹。
  二.數據發現
  互聯網中的數據良莠不齊,如何從紛繁復雜的互聯網中發現有價值的數據是一個頭痛的問題。通常數據發現的過程中存在以下4個難點:
  1.數據海量,無法遍歷窮舉;
  2.魚龍混雜,需要甄別出高價值的數據;
  3.存在死鏈、無效參數、作弊、陷阱等頁面使得數據獲取的過程中存在各種坑。
  4.從哪個網站獲取?如何得到這個網站內有價值的鏈接?
     那么:如何獲取有效站點?通常有以下2個辦法:
  1.垂直榜單數據,一般領域內的熱門站點都會存在于各大垂直榜單數據中,以視頻站點為例,可以監控類似類似 www.hao123.com 上的垂直分類數據做提取收集
  2.關鍵字提取,通常可以利用關鍵字到綜合搜索引擎(google、百度等)中獲取。這里有個問題就是關鍵字如何獲取,一方面可以垂直引擎中的零結果的關鍵字或者其他低CTR關鍵字,另一方面可以利用已經積累的數據構造,例如想要獲取音樂鈴聲類的站點,可以以“最炫民族風 鈴聲”構造出特定特征的關鍵字。
    3.關鍵字獲取,同類垂直綜合站點中爬取,以獲取新聞站點為例,可以到 http://news.baidu.com 中將其中的鏈接抽取匯聚成特定的一些站點。
    4.綜合類站點頁面
  那又是如何從網站內得到高價值的鏈接呢?
  一般的url都有一些顯著特征,通常可以利用前面的方法2,利用大量的query到綜合搜索引擎中做site檢索獲取大量同站點內url,這里基于一個假設就是搜索引擎能召回的數據都是億萬鏈接中盡量有價值的展現給用戶,召回的結果已經融合了用戶點擊、數據本身質量、站點權威等因子在這里,是一個綜合權威的結果。得到同站點url后我們可以分析其特征,對于一些顯著特征占比的url可以認為是高價值鏈接的特征,例如百度百科http://baike.baidu.com/subview/(d+)/(d+).htm和http://baike.baidu.com/view/(d+).htm 類似這種特殊的片段。在得到高質量的特征的url后可以對庫內已經抓取的數據做鏈接分析,反轉父鏈子鏈關系匯聚出一些能產生高價值數據的父鏈作為種子持續發現高價值數據。
  三、數據抓取
  以上我們介紹了如何獲取有價值的url,得到url后通常需要將其抓取下來做后續的處理,如果量小可以使用curl庫或者wget直接搞定,這里面臨兩個比較大的問題:
  速度如果控制不好會導致被目標站點封禁;
  wget或者直接構造http請求只能獲取到靜態頁面,對于動態頁面只能獲取到原始的一些js代碼。
  為此,我們需要一種爬蟲引擎能夠優雅、柔性的抓取,同時盡可能模擬瀏覽器的行為,使得抓取的結果能盡可能的完整。對于問題1可以有兩種辦法:
  有效的壓力控制,這里的壓力是指單位時間內對目標站點的訪問量,一是壓力的計算需要根據對方站點規模(參考alexa排名)、pv量以及當前爬蟲的規模做一個適當的計算,同時可以根據不同時間段做合適的調整,例如晚上通常目標網站的pv小我們可以適當提高我們抓取壓力;
  提高出口代理,盡量復用出口ip,由于外網ip的資源非常珍貴,需要提高出口ip的管理,按照運營商、地域、ip段進行分散管理,同時可以從外網獲取一些公用的代理地址做補充。
  對于問題2,則通常需要模擬瀏覽器的行為,研究瀏覽器js的解析、運行的一些行為,通常可以研究webkit做一些ajax異步拉取的填充,使得抓取的頁面盡可能的和瀏覽器中訪問看到的一致,這里并不展開webkit引擎的開發使用。
  在回答了前面這兩個問題后,介紹我們目前爬蟲引擎的一個基本結構,主要由以下幾部分組成:
  access:接入模塊,主要用于屏蔽多業務入口,在這里主要做屏蔽多業務入口,對外屏蔽后臺各種處理邏輯,同時將url歸一化后按照子域hash到對應的lcs模塊中處理;
  dns server和robots server:主要是存放請求dns解析的結果和robots解析的結果,采用key-value 的存儲方式加上LRU淘汰策略,另外后臺有邏輯定期更新。
  lcs:引擎核心控制模塊,控制了url下發的速度,lcs在收到請求后會先請求dns和robots,用以獲得目標網站ip以及是否在robots范圍內允許下載,對允許下載的url送入到排隊隊列中進行排隊,同時對上游access發送的超額url做過載截斷,使得系統滿足壓力控制,同時在這里對排隊長度做一定的控制,降低排隊時長,使得系統可以盡量的滿足實時抓取的需求。
  cs:純粹的抓取模塊,負責處理抓取中存在的各種問題,例如死鏈、跳轉、壓縮解壓、chunck接受等問題,同時帶有webkit的解析引擎會負責模擬瀏覽器行為對動態頁面做解析抓取。
  主控master:負責各個模塊心跳檢測,配置下發等一些控制模塊,整個系統是一個完全無狀態設計,盡量多邏輯做簡單,除了一些系統內必備的重試之外其余的出錯盡量在上層做重試。
  四.數據抽取
  有了抓取的數據之后需要對原始網頁中的信息進行有效信息的加工提取,源于部門多年技術積累,我們對爬取的數據可以做兩類抽取:
  1.基于機器學習+規則實現的通用抽取方案,該方案通過預處理、Dom建樹和css渲染等過程先對html進行dom解析,之后根據事先訓練好的模型對網頁進行分型操作,例如識別出新聞、論壇、小說等網頁結構,最后根據文本長度、文本位置、標簽名稱等特征對網頁進行分塊抽取得到相關的信息。該方法是一個通用的解決方案,主要能夠實現標題、正文抽取,網頁結構分類等一些基礎的抽取需求。對于一般常見的抽取服務即可滿足需求。
  2.基于url模板的結構化抽取方案,前面基于機器學習的方案只能滿足通用的、相對粗糙的信息提取,無法對精準的字段做抽取。為此我們提供一種精確到字段的結構化抽取的方法,該方法的主要思路是事先配置好需要抽取內容的模版(模版可以是正則表達式或XPATH),然后基于html進行精確的模版匹配,最后將匹配結果輸出即可。這里主要的難點在于xpath的配置的便捷性以及后續一些噪音的處理過程,這里不再展開贅述。
  五.數據更新
  通過前面的步驟我們可以完成數據的發現、抓取到入庫,通常這個時候已經可以滿足使用需求,但是對于影視類、知識類等數據常常是在更新變化的,對于此類數據為了保證數據的時新性、權威性需要進行不斷的更新。更新的難點通常還是由于庫內的數量巨大,如果需要全量短時間內更新的話在現有的資源規模基本上難以實現,通常主流的辦法都是按照一定的策略做選取,選取出候選更新集做更新,之后再同步到全量數據集合中。
  選取策略通常需要結合不同的業務特性做不同的策略。以視頻為例,通常視頻的劇集更新都是在一定的時間范圍,國產劇集一般是每天凌晨24點,美劇則是周一周二,綜藝則是周六周日。為此每次新抓取的數據都記錄一個更新時間,通過分析庫內連續劇集更新時間我們可以推斷出下一次更新的時間,那么我們可以經過一輪大的選取,從全量數據中選取出當天可能會更新的數據,對這一批量小的數據進行更新。
  另外對于一些劇集,各大視頻播放網站正在熱播的數據則需要做到分鐘級別的更新,一般這種量比較小,但是由于熱度很高,所以其更新頻率需要做到更高,為此對于榜單數據,我們通過分析抓取各垂直站點的熱門榜單及分析微博數據,得到熱門資源列表。
  更新則主要是體現在兩個方面:一是頁面發生變化,例如字段發生更新等情況;二是頁面失效,變成死鏈。頁面變化更新通常例如電視劇追劇、app應用版本的升級相應的內容發生變化。一般這里重新走一遍之前結構化抽取的流程即可。對于頁面失效、死鏈這種可以從頁面展現形態區分為頁面級死鏈和內容級死鏈。頁面級死鏈可以通過http返回碼404直接識別。對于內容級死鏈我們通常有兩個步驟同步進行驗證:
  死鏈特征提取,通過分析出死鏈樣本學習出一定死鏈特征模型
  競品交叉驗證,例如古劍奇譚如果檢測到風行這個站點死鏈,那么可以到風行、soku、百度這些視頻站點進行搜索比對,做一次競品間的比對。
  通過前面這兩個步驟基本可以完成一輪失效檢測。為了進一步修正模型,提高失效置信度,我們外加了一層人工抽樣審核,并且將結果反饋到模型中,指導下一輪迭代運行。
  六.篩選總結
  總的來說,對于一個垂直的數據獲取平臺我們構建了如下的一個流程,主要分為下載發現、離線存儲、抽取清洗三大塊。調度發現包括了前面提到的頁面發現、數據抓取、壓力控制等內容,抓取后的數據主要由tbase、cfs等存儲介質進行存儲,之后我們有一套結構化抽取平臺和通用抽取平臺對數據進行規整、關聯聚合形成獨立供業務使用的結構化數據。
 
主站蜘蛛池模板: 国产在线视频一区二区三区 | 国产成a人片在线观看视频下载 | 尤物免费在线视频 | 国产美女精品久久久久久久免费 | 亚洲图片一区 | 亚洲av无码国产永久播放蜜芽 | 四虎影视国产884a精品亚洲 | 一级片一 | 韩国福利一区 | 国产精品免费一区二区三区四区 | 亚洲无码在线播放 | 欧美成人免费视频一级 | 亚洲综合网址 | 亚洲国产一区二区三区精品 | 久久伊人一区二区三区四区 | 五月久久亚洲七七综合中文网 | 国产成人精品视频一区 | 亚洲一区二区三区自拍公司 | 国内精品视频九九九九 | 国产成a人片在线观看视频下载 | 久久精品美女久久 | 欧洲丰满少妇做爰视频爽爽 | 又嫩又硬又黄又爽的视频 | 天堂网www资源在线 天堂网www最新版资源在线 | 亚洲成a∨人片在无码2023 | 四虎在线影视 | 四虎剧院| 中文亚洲av片在线观看不卡 | 一级一片免费视频播放 | 国产情侣小视频 | 免费澳门一级毛片 | 亚洲欧美视频在线播放 | 日韩精品区| 一本一道波多野结衣av黑人 | 青青草国产免费久久久91 | 欧美精品亚洲人成在线观看 | 日韩精品无码一区二区视频 | 欧美日韩亚洲另类人人澡 | 久久久这里有精品 | 人人妻人人澡av天堂香蕉 | 久久新视频 |