Python爬蟲從入門到放棄(十)之 關於深度優先和廣度優先
- 網站的樹結構
- 深度優先演算法和實現
- 廣度優先演算法和實現
網站的樹結構
通過伯樂線上網站為例子:
並且我們通過訪問伯樂線上也是可以發現,我們從任何一個子頁面其實都是可以返回到首頁,所以當我們爬取頁面的資料的時候就會涉及到去重的問題,我們需要將爬過的url記錄下來,我們將上圖進行更改
在爬蟲系統中,待抓取URL佇列是很重要的一部分,待抓取URL佇列中的URL以什麼樣的順序排佇列也是一個很重要的問題,因為這涉及到先抓取哪個頁面,後抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面是常用的兩種策略:深度優先、廣度優先
深度優先
深度優先是指網路爬蟲會從起始頁開始,一個連結一個連結跟蹤下去,處理完這條線路之後再轉入下一個起始頁,繼續追蹤連結,通過下圖進行理解:
這裡是深度優先,所以這裡的爬取的順序式:
A-B-D-E-I-C-F-G-H (遞迴實現)
深度優先演算法的實現(虛擬碼):
廣度優先
廣度優先,有人也叫寬度優先,是指將新下載網頁發現的連結直接插入到待抓取URL佇列的末尾,也就是指網路爬蟲會先抓取起始頁中的所有網頁,然後在選擇其中的一個連線網頁,繼續抓取在此網頁中連結的所有網頁,通過下圖進行理解:
還是以這個圖為例子,廣度優先的爬取順序為:
A-B-C-D-E-F-G-H-I (佇列實現)
廣度優先程式碼的實現(虛擬碼):
相關推薦
Python爬蟲從入門到放棄(十)之 關於深度優先和廣度優先
網站的樹結構深度優先演算法和實現廣度優先演算法和實現網站的樹結構通過伯樂線上網站為例子:並且我們通過訪問伯樂線上也是可以發現,我們從任何一個子頁面其實都是可以返回到首頁,所以當我們爬取頁面的資料的時候就會涉及到去重的問題,我們需要將爬過的url記錄下來,我們將上圖進行更改在爬蟲系統中,待抓取URL佇列是很重要
Python爬蟲包 BeautifulSoup 學習(十) 各種html解析器的比較及使用
BeautifulSoup號稱Python中最受歡迎的HTML解析庫之一,但是這並不是唯一的選擇。 解析庫 lxml 這個庫可以用來解析HTML和XML文件,以非常底層的實現而聞名,大部分原始碼都是C語言寫的,雖然學習這東西要花一定的時間,但是它的處理
Python爬蟲從入門到進階(1)之Python概述
支持 color python運行 nbsp python自動化 人工智 應用領域 翻譯 接下來 1.計算機語言概述 (1).語言:交流的工具,溝通的媒介 (2).計算機語言:人跟計算機交流的工具 (3).Python是計算機語言的一種 2.Python編程語言 代碼:
Python爬蟲從入門到進階(2)之爬蟲簡介
法律 進階 爬蟲 哪裏 back 目標 ack 數據分析 取數 1.爬蟲入門:使用代碼模擬真實用戶發送網絡請求批量獲取數據1).爬蟲價值: 1.買賣數據(高端領域特別貴) 2.數據分析(出分析報告) 3.流量 4.阿裏指數,百度指數2).合法性:灰色
Python爬蟲從入門到進階(2)之urllib庫的使用
windows 6.0 賬號 高級 manager cname 4.5 clr python爬蟲 1.什麽是Urllib(官網地址:https://docs.python.org/3/library/urllib.html#module-urllib) Urllib是pyt
Python爬蟲從入門到進階(4)之xpath的使用
names 擴展函數 .get 結果 定義 提高 調用函數 命名空間 concat 官網地址:https://lxml.de/xpathxslt.html 導入: from lxml import etree lxml.tree 支持 ElementTree 和 El
GAN網路從入門教程(二)之GAN原理
在一篇部落格[GAN網路從入門教程(一)之GAN網路介紹](https://www.cnblogs.com/xiaohuiduan/p/13237486.html)中,簡單的對GAN網路進行了一些介紹,介紹了其是什麼,然後大概的流程是什麼。 在這篇部落格中,主要是介紹其數學公式,以及其演算法流程。當然數學公
Python爬蟲從入門到放棄(十一)之 Scrapy框架整體的一個了解
object 定義 roc encoding eth obi pipe pos 等等 這裏是通過爬取伯樂在線的全部文章為例子,讓自己先對scrapy進行一個整理的理解 該例子中的詳細代碼會放到我的github地址:https://github.com/pythonsite/
Python爬蟲從入門到放棄(十八)之 Scrapy爬取所有知乎用戶信息(上)
user 說過 -c convert 方式 bsp 配置文件 https 爬蟲 爬取的思路 首先我們應該找到一個賬號,這個賬號被關註的人和關註的人都相對比較多的,就是下圖中金字塔頂端的人,然後通過爬取這個賬號的信息後,再爬取他關註的人和被關註的人的賬號信息,然後爬取被關註人
Python爬蟲從入門到放棄(十五)之 Scrapy框架中Spiders用法
ide 字典 初始化 需要 工作流程 www. 默認 apple 一個 原文地址https://www.cnblogs.com/zhaof/p/7192503.html Spider類定義了如何爬去某個網站,包括爬取的動作以及如何從網頁內容中提取結構化的數據,總的來說spi
Python爬蟲從入門到放棄(十二)之 Scrapy框架的架構和原理
執行 持久 pip 下載 響應 .py example 數據模型 特殊 原文地址https://www.cnblogs.com/zhaof/p/7173397.html 這一篇文章主要是為了對scrapy框架的工作流程以及各個組件功能的介紹 Scrapy目前已經可以很好的在
Python爬蟲從入門到放棄(十四)之 Scrapy框架中選擇器的用法
esp 技術分享 val arr con des image 使用 自己 原文地址https://www.cnblogs.com/zhaof/p/7189860.html Scrapy提取數據有自己的一套機制,被稱作選擇器(selectors),通過特定的Xpath或者CS
Python爬蟲從入門到放棄(二十二)之 爬蟲與反爬蟲大戰
相對 一個 log 識別 誰是 pytho logs 京東 自動 原文地址https://www.cnblogs.com/zhaof/p/7326260.html 爬蟲與發爬蟲的廝殺,一方為了拿到數據,一方為了防止爬蟲拿到數據,誰是最後的贏家? 重新理解爬蟲中的一些概念 爬
Python爬蟲從入門到放棄(二十四)之 Scrapy登錄知乎
提示 mac 重要 瀏覽器 com fin 傳遞 問題 turn 原文地址https://www.cnblogs.com/zhaof/p/7406482.html 因為現在很多網站為了限制爬蟲,設置了為只有登錄才能看更多的內容,不登錄只能看到部分內容,這也是一種反爬蟲的手段
Python爬蟲從入門到放棄(二十一)之 Scrapy分布式部署
安裝 abc package .com 調度 fault 官方 python3 ocs 原文地址https://www.cnblogs.com/zhaof/p/7308865.html 按照上一篇文章中我們將代碼放到遠程主機是通過拷貝或者git的方式,但是如果考慮到我們又多
Python爬蟲從入門到放棄(十七)之 Scrapy框架中Download Middleware用法
本文出自“python修行路”部落格,http://www.cnblogs.com/zhaof/p/7198407.html這篇文章中寫了常用的下載中介軟體的用法和例子。Downloader Middleware處理的過程主要在排程器傳送requests請求的時候以及網頁將response結果返回給spide
Python爬蟲從入門到放棄(十八)之 Scrapy爬取所有知乎使用者資訊(上)
本文出自“python修行路”部落格,http://www.cnblogs.com/zhaof/p/7215617.html爬取的思路首先我們應該找到一個賬號,這個賬號被關注的人和關注的人都相對比較多的,就是下圖中金字塔頂端的人,然後通過爬取這個賬號的資訊後,再爬取他關注的人和被關注的人的賬號資訊,然後爬取被
python爬蟲從入門到放棄(五)之 正則的基本使用
語言 代碼例子 name 添加 iter ima 制表符 imp things 什麽是正則表達式 正則表達式是對字符串操作的一種邏輯公式,就是 事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符”,這個“規則字符” 來表達對字符的一種過濾邏輯。 正則並不是
python爬蟲從入門到放棄(六)之 BeautifulSoup庫的使用
src 表達 支持 正則表達 必須 這樣的 com 子節點 prettify 上一篇文章的正則,其實對很多人來說用起來是不方便的,加上需要記很多規則,所以用起來不是特別熟練,而這節我們提到的beautifulsoup就是一個非常強大的工具,爬蟲利器。 beautifulS
python爬蟲從入門到放棄(八)之 Selenium庫的使用
自動 .com 程序 png 都是 例子 等待 點擊 哪些 一、什麽是Selenium selenium 是一套完整的web應用程序測試系統,包含了測試的錄制(selenium IDE),編寫及運行(Selenium Remote Control)和測試的並行處理(Sele