?
?爬蟲成長之路(一)里我們介紹了如何爬取證券之星網站上所有A股數據,主要涉及網頁獲取和頁面解析的知識。爬蟲成長之路(二)里我們介紹了如何獲取代理IP并驗證,涉及了多線程編程和數據存儲的知識。此次我們將在前兩節的基礎上,對證券之星全站的行情數據進行爬取。第一節的思路爬一個欄目的數據尚可,爬上百個欄目的數據工作量就有點大了。下面我們先介紹下基礎的爬蟲架構。
???????本文主要包含爬蟲框架六大基礎模塊,分別為爬蟲調度器、URL下載器、URL管理器、HTML下載器、HTML解析器、數據存儲器。功能分析如下
???????爬蟲調度器:主要負責統籌其他四個模塊的工作。
?????? URL下載器:主要負責下載需要爬取數據的URL鏈接。
?????? URL管理器:負責管理URL鏈接,維護已經爬取的URL集合和未爬取的URL集合,提供獲取新URL鏈接的接口。
?????? HTML下載器:用于從URL管理器中獲取未爬取的URL鏈接并下載HRML網頁。
?????? HTML解析器:用戶從HTML下載器中獲取已經下載的HTML網頁,解析出有效數據交給數據存儲器。
???????數據存儲器:用于將HTML解析器解析出來的數據通過文件或者數據庫的形式儲存起來。
???????為了方便理解,以下是基礎爬蟲框架運行流程示意圖
???????
?
???????此處介紹文件夾,下面,我們對這6大模塊進行詳細的介紹。
???????一、URL下載器
?????? URL下載器包含兩步,首先下載網站左側導航欄的URL,然后通過導航欄的URL獲取每個子欄目包含的鏈接列表。
???????
????? ?下面是獲取左側導航欄所有鏈接并生成導航文件的代碼
?get_catalog
?????? 下面是獲取每個子欄目所有鏈接的代碼
?get_urls
???????二、URL管理器
?????? URL管理器主要包括兩個變量,一個是已爬取的URL的?集合,另外一個是未爬取的URL的集合。采用Python中的set類型,主要是使用set的去重功能。
?????? URL管理器除了具有兩個URL集合,還需要提供以下接口,用于配合其他模塊使用,接口如下:
???????判斷是否有待取的URL,方法定義為has_new_url()。
???????添加新的URL到未爬取集合中,方法定義為add_new_url(url),add_new_urls(urls)。
???????獲取一個未爬取的URL,方法定義為get_new_url()
?????? 下面為URL管理器模塊的代碼
?UrlManager
???????三、HTML下載器
???????HTML下載器用來下載網頁,這時候需要注意網頁的編碼,已保證下載的網頁沒有亂碼。
?????? 獲取網頁內容時可能會遇到IP被封的情況,所以我們得爬取一個代理IP池,供HTML下載器使用。
????? ?下面是獲取代理IP池的代碼
?get_proxy_ip
?????? 下面是HTML下載器模塊的代碼
?HtmlDownloader
???????四、HTML解析器
?????? HTML解析器主要對HTML下載器下載的網頁內容進行解析,提取想要的內容。
?????? 本文用到的網頁解析方法主要是正則表達式和BeautifulSoup,下面是HTML解析器的代碼
?HtmlParser
???????五、數據存儲器
?????? 數據存儲器主要對解析器解析的數據進行存儲,存儲方式有很多種,本文選用MYSQL數據庫進行存儲。
?????? 解析器把每一頁的股票數據存為了一個數據框,然后通過數據庫連接引擎,把數據框的數據直接存入數據庫。
?????? 以下是數據存儲器的模塊的代碼
?DataOutput
???????六、爬蟲調度器
?????? 爬蟲調度器主要將上述幾個模塊組合起來,合理的分工,高效完成任務。
?????? 爬蟲調度器采用進程池的方式加快了程序執行的效率,下面是爬蟲調度器模塊的代碼
?SpiderMan
?????? 將上述每個模塊的代碼都新建一個py文件放在firstSpider文件夾下,并運行如下主程序即可獲取證券之星全站的股票數據
?main
??????麻雀雖小五臟俱全,以上是用簡單的爬蟲框架實現的一次全站內容爬取,在執行速度和程序偽裝上還有很大提升空間,希望能夠與大家一同交流成長。
Python學習路線匯總:Python所有方向的技術點做的整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照下面的知識點去找對應的學習資源,保證自己學得較為全面:
一、Python所有方向的學習路線
Python所有方向路線就是把Python常用的技術點做整理,形成各個領域的知識點匯總,它的用處就在于,你可以按照上面的知識點去找對應的學習資源,保證自己學得較為全面。
二、學習軟件
工欲善其事必先利其器。學習Python常用的開發軟件都在這里了,還有環境配置的教程,給大家節省了很多時間。
三、全套PDF電子書
書籍的好處就在于權威和體系健全,剛開始學習的時候你可以只看視頻或者聽某個人講課,但等你學完之后,你覺得你掌握了,這時候建議還是得去看一下書籍,看權威技術書籍也是每個程序員必經之路。
四、入門學習視頻全套
我們在看視頻學習的時候,不能光動眼動腦不動手,比較科學的學習方法是在理解之后運用它們,這時候練手項目就很適合了。
五、實戰案例
光學理論是沒用的,要學會跟著一起敲,要動手實操,才能將自己的所學運用到實際當中去,這時候可以搞點實戰案例來學習。
**學習資源已打包,需要的小伙伴可以戳這里:【學習資料】?