[發明專利]爬蟲程序工作狀態的判斷方法和裝置有效
| 申請號: | 201410779531.5 | 申請日: | 2014-12-15 |
| 公開(公告)號: | CN104408195B | 公開(公告)日: | 2017-12-19 |
| 發明(設計)人: | 何愷鐸 | 申請(專利權)人: | 北京國雙科技有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30;G06F9/44 |
| 代理公司: | 北京康信知識產權代理有限責任公司11240 | 代理人: | 吳貴明,張永明 |
| 地址: | 100086 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 爬蟲 程序 工作 狀態 判斷 方法 裝置 | ||
技術領域
本發明涉及互聯網領域,具體而言,涉及一種爬蟲程序工作狀態的判斷方法和裝置。
背景技術
爬蟲程序是構建互聯網搜索引擎的基本組件,具備自動分析并爬取網站上所有頁面的功能。其核心步驟是,首先爬取一個或多個給定的初始頁面,隨后對返回的頁面進行鏈接分析,生成新的頁面爬取請求,如此循環往復,直至不再有新的頁面爬取請求生成為止。
一般來說,可以將爬蟲程序分為鏈接分析模塊與頁面爬取模塊,這兩個模塊是互相依賴的,既是對方資源的生產者,也是對方資源的消費者,這種相互依賴關系導致了爬取結束的判定比較困難,因為理論上鏈接分析的結束需要等待頁面爬取模塊的結束,頁面爬取模塊的結束也需要等待鏈接分析模塊的結束,而在多線程時需要考慮線程的相關性,使得對爬蟲程序的結束的判定更為困難。
傳統的爬蟲程序,在判斷爬蟲程序是否結束時,需要始終追蹤頁面爬取模塊中待爬取請求的數量和正在執行的爬取請求的數量。僅當該兩個數量同時為零時,才能判定爬蟲結束。
現有技術方案在多線程環境下具有較高的技術難度,并存在競爭條件風險。在多線程環境下,首先,獲取和追蹤這隊列請求數量和正在進行的爬取任務數量必須分別使用線程安全的數據結構;其次,判斷兩個數量同時為零具有較高的技術難度,因為作此判定需要進行兩個條件判斷,而這兩個條件判斷作為一個整體不具備原子性。而在兩個條件判斷的間隙,狀態可能發生了變化,導致判定結果錯誤。
針對現有技術中判斷爬蟲程序是否結束的準確性差的問題,目前尚未提出有效的解決方案。
發明內容
本發明的主要目的在于提供一種爬蟲程序工作狀態的判斷方法和裝置,以解決現有技術中判斷爬蟲程序是否結束的準確性差的問題。
為了實現上述目的,根據本發明實施例的一個方面,提供了一種爬蟲程序工作狀態的判斷方法。根據本發明的爬蟲程序工作狀態的判斷方法包括:判斷爬蟲程序的鏈接分析模塊接收到的第一結果數據是否為第一爬取請求所產生的數據,其中,第一爬取請求為鏈接分析模塊發出的最后一個請求;若鏈接分析模塊接收到的第一結果數據為第一爬取請求所產生的數據,則判斷第一結果數據是否產生第二爬取請求,其中,第二爬取請求為解析第一結果數據產生的請求;若第一結果數據未產生第二爬取請求,則判斷出爬蟲程序的工作狀態為結束爬?。蝗舻谝唤Y果數據產生第二爬取請求,則判斷出爬蟲程序的工作狀態為正在爬取。
進一步地,判斷第一結果數據是否產生第二爬取請求包括:若鏈接分析模塊接收到的第一結果數據為第一爬取請求所產生的數據,則開啟計時器計時;在預設時間段內判斷鏈接分析模塊是否輸出第二爬取請求;若鏈接分析模塊輸出第二爬取請求,則判斷出第一結果數據產生第二爬取請求,停止并重置計時器;若鏈接分析模塊未輸出第二爬取請求,則判斷出第一結果數據未產生第二爬取請求。
進一步地,在判斷爬蟲程序的鏈接分析模塊接收到的第一結果數據是否為第一爬取請求所產生的數據之前,判斷方法還包括:設置鏈接分析模塊輸出的各個第三爬取請求的第一標簽;設置執行第三爬取請求得到第一結果數據的第二標簽;建立第一標簽與第二標簽的映射關系,其中,第三爬取請求包括第一爬取請求;判斷爬蟲程序的鏈接分析模塊接收到的第一結果數據是否為第一爬取請求所產生的數據包括:通過第一標簽和第二標簽的映射關系判斷第一結果數據是否為第一爬取請求所產生的數據。
進一步地,在設置鏈接分析模塊輸出的各個第三爬取請求的第一標簽的同時,判斷方法還包括:保存第一標簽,停止并重置計時器的計時。
進一步地,在判斷出爬蟲程序的工作狀態為結束爬取之后,判斷方法還包括:關閉爬蟲程序的鏈接分析模塊和頁面爬取模塊。
為了實現上述目的,根據本發明實施例的另一方面,提供了一種爬蟲程序工作狀態的判斷裝置。
根據本發明的爬蟲程序工作狀態的判斷裝置包括:第一判斷模塊,用于判斷爬蟲程序的鏈接分析模塊接收到的第一結果數據是否為第一爬取請求所產生的數據,其中,第一爬取請求為鏈接分析模塊發出的最后一個請求;第二判斷模塊,用于若鏈接分析模塊接收到的第一結果數據為第一爬取請求所產生的數據,則判斷第一結果數據是否產生第二爬取請求,其中,第二爬取請求為解析第一結果數據產生的請求;第一確定模塊,用于若第一結果數據未產生第二爬取請求,則判斷出爬蟲程序的工作狀態為結束爬取;第二確定模塊,用于若第一結果數據產生第二爬取請求,則判斷出爬蟲程序的工作狀態為正在爬取。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京國雙科技有限公司,未經北京國雙科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410779531.5/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種管道減振的優化方法
- 下一篇:網絡搜索關鍵詞的檢測方法及裝置





