關閉

                  爬蟲相關技術,真的只有這么簡單?(上)

                  發表于:2021-10-21 09:29

                  字體: | 上一篇 | 下一篇 | 我要投稿

                   作者:psspider    來源:思否

                  #
                  爬蟲
                    什么是爬蟲
                    我們先看看維基百科的定義:
                    網絡爬蟲(英語:web crawler),也叫網絡蜘蛛(spider),是一種用來自動瀏覽萬維網的網絡機器人。
                    通俗的說爬蟲就是通過一定的規則策略,自動抓取、下載互聯網上網頁,在按照某些規則算法對這些網頁進行數據抽取、 索引。  像百度、谷歌、今日頭條、包括各類新聞站都是通過爬蟲來抓取數據。

                    題外話
                    博客園里偶爾看到爬蟲的文章,其實很多都稱不上為爬蟲。 只能叫玩具或者叫http請求下載程序吧。嚴格來說爬蟲是一個系統,它包含了爬取策略、更新策略、隊列、排重、存儲模塊等部分。

                    爬蟲的分類
                    按照抓取網站對象來分類,可以分為2類爬蟲。

                    1. 通用爬蟲
                    類似百度、谷歌這樣的爬蟲,抓取對象是整個互聯網,對于網頁沒有固定的抽取規則。 對于所有網頁都是一套通用的處理方法。

                    2. 垂直爬蟲
                    這類爬蟲主要針對一些特定對象、網站,有一臺指定的爬取路徑、數據抽取規則。比如今日頭條,它的目標網站就是所有的新聞類網站。 比如Etao比價、網易的慧慧購物助手,他們的目標網站就是 淘寶、京東、天貓等等電商網站。
                    通用爬蟲和垂直爬蟲顯著的區別:
                    抓取范圍,通用爬蟲的抓取范圍要比垂直爬蟲大得多,一個是整個互聯網,一個是指定的網站。
                    爬取路線,一個通用爬蟲要不按照深度爬取、要不是按廣度爬取。 而垂直爬蟲則可能是按照指定路線爬取。
                    數據處理,通用爬蟲一般就是分詞、索引到數據庫。 而垂直爬蟲則通過特定的規則來抽取更加精細的數據 。

                    一般爬蟲的構成
                    那么一個完整的爬蟲程序由哪些東西組成呢?

                    1. HTTP下載器
                    顧名思義就是負責HTTP下載,別小瞧它,要做好還挺不容易,因為你面對的復雜而無序、甚至包含錯誤的互聯網。

                    2. 抓取隊列
                    就是存儲新產生的URL隊列(queue),隊列可以是多種形式的,他可以是redis的隊列、數據庫中的表、內存中的隊列。根據場景,你可以自行選擇。

                    3. 調度器
                    調度嘛,就是負責管理工作的,它通過制定策略,規定哪些URL優先執行、哪些URL靠后。

                    4. 多線程模塊
                    對我來說,一個爬蟲必須要支持多線程,并且可控。

                    5. 排重集合
                    排重,這是一個爬蟲必不可少的部分,你必須記錄下哪些URL已經采集過、哪些是未采集過的,復雜點的爬蟲,你可能還需要記錄上次抓取時間。

                    6. 頁面解析器
                    就是定義如何解析抓取到的頁面,對于通用爬蟲,它可能對于所有頁面都是一套邏輯,就是分詞、索引。 但對于垂直爬蟲,則需要指定規則。手段可能有正則、XPath、正文識別等等。

                    7.存儲數據
                    定義以什么方式存儲抓取到的數據, 一般情況下都是存儲到數據庫啦。當然,是一般的關系數據庫,還是NoSQL 就看需求了。

                    一般爬蟲的流程
                    通用爬蟲、垂直爬蟲他們的流程都是相似的,下面我們簡單說說一個爬蟲到底是怎么運行的。
                    首先,我們用一張一般爬蟲的流程結構圖來看看。

                    英文我就不翻譯了。 大概說說流程吧。
                    指定起始URLs。 也就是指定一個入口。不管是通用爬蟲還是垂直爬蟲,都需要一個入口。
                    下載、解析URL。 這里分為2個操作,1. 抽取數據,存儲到數據庫;2. 解析出頁面中包含的URL。
                    將解析的新URL放到隊列中。
                    調度器從URL隊列中,按照一定策略,取出要下載的URL,添加到HTTP下載中。
                    重復執行第二步,直到URL隊列為空。

                    本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系51Testing小編(021-64471599-8017),我們將立即處理
                  《2023軟件測試行業現狀調查報告》獨家發布~

                  關注51Testing

                  聯系我們

                  快捷面板 站點地圖 聯系我們 廣告服務 關于我們 站長統計 發展歷程

                  法律顧問:上海蘭迪律師事務所 項棋律師
                  版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2024
                  投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

                  滬ICP備05003035號

                  滬公網安備 31010102002173號

                  亚洲欧洲自拍图片专区123_久久久精品人妻无码专区不卡_青青精品视频国产色天使_A免看的日黄亚洲