彭莉
引言
Python是一種面向對象、解釋型、帶有動態語義的高級程序設計語言,其語法簡潔清晰,具有豐富和強大的類庫。Python語言支持覆蓋信息技術各領域的10萬個函數庫,依靠開源快速開發,形成了全球最大的編程社區。
基于Python的爬蟲與其他語言相比的有很多優勢,本文主要是對Python爬蟲技術進行闡述。通過爬去某個網站的所有新聞這個案例,來進一步闡釋Python爬蟲技術的簡潔。
一、爬蟲的概念
網絡爬蟲(也稱為網絡蜘蛛、網絡機器人,在FOAF社區中,更常被稱為網絡追逐者)是根據某些規則自動從萬維網獲取信息的程序或腳本,不常用的其他名稱包括螞蟻、自動索引、仿真程序或蠕蟲。
二、爬蟲的基本流程
發起請求:通過HTTP庫向目標站點發起請求,即發送一個Request,請求可以包含額外的headers等信息,等待服務器響應。
獲取響應內容:如果服務器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,類型可能有HTML、Json字符串、二進制數據(如圖片視頻)等類型。
解析內容:得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析。可能是Json,可以直接轉為Json對象解析,可能是二進制數據,可以做保存或者進一步的處理。
保存數據:保存形式多樣,可以存為文本,也可以保存至數據庫,或者保存特定格式的文件。
(一)Request和Response
Request:瀏覽器就發送消息給該網址所在的服務器,這個過程叫做HTTPRequest。Response:服務器收到瀏覽器發送的消息后,能夠根據瀏覽器發送消息的內容,做相應處理,然后把消息回傳給瀏覽器。這個過程叫作HTTPResponse。瀏覽器收到服務器的Response信息后,會對信息進行相應處理,然后展示。
(二)抓取數據類型
網頁文本:如HqTVIL文檔、Json格式文本等。圖片:獲取到的是二進制文件,保存為圖片格式。視頻:同為二進制文件,保存為視頻格式即可。And so on:只要是能請求到的,都能獲取。
(三)解析方式
直接處理,Json解析,正則表達式,BeautifulSoup庫PyQuery庫和XPath庫。
(四)保存數據
文本:純文本、Json、Xml等。關系型數據庫:如MySQL、Oracle、SQL Server等具有結構化表結構形式存儲。非關系型數據庫:如MongoDB、Redis等Key-Value形式存儲。二進制文件:如圖片、視頻、音頻等等直接保存成特定格式即可。
三、案例:爬取某個網站股票信息