python應用之爬蟲實戰1 爬蟲基本原理
知識內容:
1.爬蟲是什麽
2.爬蟲的基本流程
3.request和response
4.python爬蟲工具
參考:http://www.cnblogs.com/linhaifeng/articles/7773496.html
一、爬蟲是什麽
1.爬蟲定義
爬蟲:把互聯網比作一張大的蜘蛛網,那一臺計算機上的數據便是蜘蛛網上的一個獵物,而爬蟲程序就是一只小蜘蛛,沿著蜘蛛網抓取自己想要的獵物/數據, 爬蟲實質是向網站發起請求,獲取資源後分析並提取有用數據的程序
2.爬蟲分類
- 定向:爬取特定領域的信息
- 非定向:爬取不確定領域的信息,比如百度搜索、谷歌搜索
3.爬蟲價值
互聯網中最有價值的便是數據
4.爬蟲應用領域
爬蟲應用比較多的地方:
- 搜索引擎
- 數據分析
- 比價網站
- 門戶網站(新聞、資訊)
二、爬蟲的基本流程
基本流程:
- 發起請求:使用http庫向目標站點發起請求,即發送一個Request(請求頭、請求體等)
- 獲取響應內容: Response(html,json,圖片,視頻等)
- 解析內容: 解析html數據\解析json數據\解析二進制數據
- 保存數據: 數據庫\文件
三、request和response
關於http協議:http://www.cnblogs.com/wyb666/p/9014857.html
1.request與response
- request:請求
- response:響應
- request:用戶將自己的信息通過瀏覽器發送給服務器
- response:服務器接收請求,分析用戶發來的請求信息,然後返回數據(返回的數據中可能包含其他鏈接,如:圖片,js,css等)
註:瀏覽器在接收Response後,會解析其內容來顯示給用戶,而爬蟲程序在模擬瀏覽器發送請求然後接收Response後,是要提取其中的有用數據。
2.request
(1)請求方式
- 常用的請求方式:GET,POST
- 其他請求方式:HEAD,PUT,DELETE,OPTHONS
- post與get請求最終都會拼接成這種形式:k1=xxx&k2=yyy&k3=zzz
- post請求的參數放在請求體內:可用瀏覽器查看,存放於form data內
- get請求的參數直接放在url後
(2)請求url
url全稱統一資源定位符,如一個網頁文檔,一張圖片, 一個視頻等都可以用url唯一來確定
(3)網頁的加載過程
- 加載一個網頁,通常都是先加載document文檔
- 在解析document文檔的時候,遇到鏈接,則針對超鏈接發起下載圖片的請求
(4)請求頭
- User-agent:請求頭中如果沒有user-agent客戶端配置,服務端可能將你當做一個非法用戶
- cookies:cookie用來保存登錄信息
- 一般做爬蟲都會加上請求頭(部分信息)
(5)請求體
- 如果是get方式,請求體沒有內容
- 如果是post方式,請求體是format data
- 登錄窗口,文件上傳等,信息都會被附加到請求體內
- 登錄,輸入錯誤的用戶名密碼,然後提交,就可以看到post,正確登錄後頁面通常會跳轉,無法捕捉到post
四、python爬蟲工具
1.請求庫
urllib模塊:python內置模塊,主要包含urllib.request、urllib.response、urllib.parse和urllib.error三部分
requests庫:第三方模塊,基於 urllib,采用 Apache2 Licensed 開源協議的 HTTP 庫。比 urllib 更方便,可節約大量的工作,完全滿足 HTTP 測試需求
selenium庫:第三方模塊,最初是一個自動化測試工具,在爬蟲中使用它主要是為了解決requests無法直接執行JavaScript代碼的問題
2.解析庫
re模塊:python內置模塊, 提供了正則表達式操作所需要的功能,能對HTML進行解析
BeautifulSoup4庫:第三方模塊,是一個可以從HTML或XML文件中提取數據的Python庫
3.爬蟲框架
Scrapy框架:一個開源和協作的框架,其最初是為了頁面抓取 (更確切來說, 網絡抓取 )所設計的,使用它可以以快速、簡單、可擴展的方式從網站中提取所需的數據。但目前Scrapy的用途十分廣泛,可用於如數據挖掘、監測和自動化測試等領域,也可以應用在獲取API所返回的數據(例如 Amazon Associates Web Services ) 或者通用的網絡爬蟲
http://www.cnblogs.com/wyb666/p/9014402.html
python應用之爬蟲實戰1 爬蟲基本原理