您好,登錄后才能下訂單哦!
這篇“Pytho爬蟲初學者需要掌握哪些知識”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Pytho爬蟲初學者需要掌握哪些知識”文章吧。
1)JAVA
Java的語法比較規則,采用嚴格的面向對象編程方法,同時有很多大型的開發框架,比較適合企業級應用。Java的學習曲線較長,不僅要學習語言相關的特性,還要面向對象的軟件構造方法,在此之后要學習一些框架的使用方法。
(1)用途:Android & IOS 應用開發,視頻游戲開發,桌面GUIs(即圖形用戶頁面),軟件開發,架構等。
(2)優勢:面向對象開源、跨平臺、市場需求旺盛;Android開發的基石, 是Web開發的主流語言;
(3)缺點:占用大量的內存,啟動時間較長,不直接支持硬件級別的處理
2)Python
python是動態形的靈活的解釋性語言,從軟件開發到Web開發,Python都有在被使用。
因為它是解釋性腳本語言,適合輕量級開發。Python是比較好學的語言。
(1)用途:爬蟲,Web開發,視頻游戲開發,桌面GUIs(即圖形用戶頁面),軟件開發,架構等。
(2)優勢:動態解釋型、擁有強大的開源類庫、開發效率高、開源,靈活,入門低易上手
(3)缺點:運行速度低于編譯型語言,在移動計算領域乏力
3)C++
C++更接近于底層,方便直接操作內存。C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規模程序的編程質量與程序設計語言的問題描述能力。C++運行效率較高,同時能夠比較容易地建立大型軟件,適合對效率要求高的軟件。C++的內容非常復雜,同時語言經過了幾十年的演化,所以學習起來難度較大,開發效率較低。
1)用途: 機器學習中的神經網絡、大型游戲編程、后臺服務、桌面軟件等
2)優勢:運行效率高、安全、面向對象、簡潔、可重用性好等
3)缺點:沒有垃圾回收機制,可能引起內存設漏; 學習難度大,開發效率相對較低;
通過在GitHub上搜索”爬蟲”,我們可以發現,目前市面上的開源爬蟲項目,Python占百分八十的份額。
而且目前市面上,具有兩年以上Python爬蟲經驗的工程師,其工資普遍高于Java和C++爬蟲工程師。
所以,Python才是開發爬蟲不二的選擇。那么一個初學者掌握哪些知識,就可以使用Python開發爬蟲呢?
1. 網絡
urllib -網絡庫(stdlib)。
requests -網絡庫。
grab – 網絡庫(基于pycurl)。
pycurl – 網絡庫(綁定libcurl)。
urllib3 – Python HTTP庫,安全連接池、支持文件post、可用性高。
httplib2 – 網絡庫。
RoboBrowser – 一個簡單的、極具Python風格的Python庫,無需獨立的瀏覽器即可瀏覽網頁。
MechanicalSoup -一個與網站自動交互Python庫。
mechanize -有狀態、可編程的Web瀏覽庫。
socket – 底層網絡接口(stdlib)。
2. HTML/XML解析器
lxml – C語言編寫高效HTML/ XML處理庫。支持XPath。
cssselect – 解析DOM樹和CSS選擇器。
pyquery – 解析DOM樹和jQuery選擇器。
BeautifulSoup – 低效HTML/ XML處理庫,純Python實現。
html5lib – 根據WHATWG規范生成HTML/ XML文檔的DOM。該規范被用在現在所有的瀏覽器上。
feedparser – 解析RSS/ATOM feeds。
MarkupSafe – 為XML/HTML/XHTML提供了安全轉義的字符串。
3. 瀏覽器自動化與仿真
selenium – 自動化真正的瀏覽器(Chrome瀏覽器,火狐瀏覽器,Opera瀏覽器,IE瀏覽器)。
Ghost.py – 對PyQt的webkit的封裝(需要PyQT)。
Spynner – 對PyQt的webkit的封裝(需要PyQT)。
Splinter – 通用API瀏覽器模擬器(selenium web驅動,Django客戶端,Zope)。
4. 多重處理
threading – Python標準庫的線程運行。對于I/O密集型任務很有效。對于CPU綁定的任務沒用,因為python GIL。
multiprocessing – 標準的Python庫運行多進程。
celery – 基于分布式消息傳遞的異步任務隊列/作業隊列。
concurrent-futures – concurrent-futures 模塊為調用異步執行提供了一個高層次的接口。
5. 異步網絡編程庫
asyncio – (在Python 3.4 +版本以上的 Python標準庫)異步I/O,時間循環,協同程序和任務。
gevent – 一個使用greenlet 的基于協程的Python網絡庫。
6. 網頁內容提取
HTML頁面的文本和元數據
newspaper – 用Python進行新聞提取、文章提取和內容策展。
html2text – 將HTML轉為Markdown格式文本。
python-goose – HTML內容/文章提取器。
lassie – 人性化的網頁內容檢索工具
了解了以上的知識點以后,我們獲取網絡數據的方式有哪些呢?
方式1:瀏覽器提交請求--->下載網頁代碼--->解析成頁面
方式2:模擬瀏覽器發送請求(獲取網頁代碼)->提取有用的數據->存放于數據庫或文件中
爬蟲要做的就是方式2。
1、發起請求
使用http庫向目標站點發起請求,即發送一個Request
Request包含:請求頭、請求體等
Request模塊缺陷:不能執行JS 和CSS 代碼
2、獲取響應內容
如果服務器能正常響應,則會得到一個Response
Response包含:html,json,圖片,視頻等
3、解析內容
解析html數據:正則表達式(RE模塊),第三方解析庫如Beautifulsoup,pyquery等
解析json數據:json模塊
解析二進制數據:以wb的方式寫入文件
4、保存數據
目前上市面上開源爬蟲項目主要有一下八個:
1.Scrapy
Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。 可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。。用這個框架可以輕松爬下來如亞馬遜商品信息之類的數據。
2.PySpider
pyspider 是一個用python實現的功能強大的網絡爬蟲系統,能在瀏覽器界面上進行腳本的編寫,功能的調度和爬取結果的實時查看,后端使用常用的數據庫進行爬取結果的存儲,還能定時設置任務與任務優先級等。
3.Crawley
Crawley可以高速爬取對應網站的內容,支持關系和非關系數據庫,數據可以導出為JSON、XML等。
4.Portia
Portia是一個開源可視化爬蟲工具,可讓您在不需要任何編程知識的情況下爬取網站!簡單地注釋您感興趣的頁面,Portia將創建一個蜘蛛來從類似的頁面提取數據。
5.Newspaper
Newspaper可以用來提取新聞、文章和內容分析。使用多線程,支持10多種語言等。
6.Beautiful Soup
Beautiful Soup 是一個可以從HTML或XML文件中提取數據的Python庫.它能夠通過你喜歡的轉換器實現慣用的文檔導航,查找,修改文檔的方式.Beautiful Soup會幫你節省數小時甚至數天的工作時間。
7.Grab
Grab是一個用于構建Web刮板的Python框架。借助Grab,您可以構建各種復雜的網頁抓取工具,從簡單的5行腳本到處理數百萬個網頁的復雜異步網站抓取工具。Grab提供一個API用于執行網絡請求和處理接收到的內容,例如與HTML文檔的DOM樹進行交互。
8.Cola
Cola是一個分布式的爬蟲框架,對于用戶來說,只需編寫幾個特定的函數,而無需關注分布式運行的細節。任務會自動分配到多臺機器上,整個過程對用戶是透明的。
以上就是關于“Pytho爬蟲初學者需要掌握哪些知識”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。