爬蟲的概念:mysql
爬蟲,又稱網頁蜘蛛或網絡機器人。ajax
爬蟲是模擬人操做客戶端,向服務器發起網絡請求,抓取數據的自動化程序或腳本。正則表達式
1.模擬:用爬蟲程序假裝人的行爲,避免被服務器識別爲爬蟲程序。redis
2.客戶端:瀏覽器,app均可以實現人與服務器之間的交互行爲,應用客戶端從服務器獲取數據。sql
3.自動化:數據量較小時能夠人工獲取數據,但每每在公司中爬取的數據量在百萬條,千萬條級別的,因此要程序自動化獲取數據。數據庫
爬蟲的價值 :
互聯網中最有價值的就是數據
爬蟲中首要任務就是要經過網絡取獲取模板服務器的數據;來爲本身創造價值編程
爬蟲的流程:
首先明確 咱們的爬蟲是客戶端 要爬的數據在服務器上存儲,
因此須要藉助網絡編程,底層的網絡協議已經有現成的封裝不須要本身寫,
數據傳輸已經解決,問題是對方給個人數據我能不能看懂 個人數據對方能不能看懂
絕大多數網絡傳輸都是採用的HTTP(*****)json
爬蟲分類:瀏覽器
1. 通用爬蟲
實例:百度,google
功能:訪問網頁->抓取數據->數據處理->提供檢索服務服務器
2. 聚焦爬蟲:
概念:
1):聚焦爬蟲是指針對某一領域根據特定要求實現的爬蟲程序,抓取須要的數據(垂直領域爬取)。
設計思路:
1):肯定爬取的url,模擬瀏覽器向服務器發送請求獲取響應數據
2):進行數據解析-->目標數據
3):將目標數據持久化到本地-->存起來
HTTP 協議 超文本傳輸協議:
1.明確要爬取的url地址
2.發送請求
瀏覽器發送請求
第三方requests模塊 pip install requests
內置的urllib模塊selenium (自動化測試模塊)
用程序驅動瀏覽器發送請求針對移動app可使用代理服務器
能夠截獲app端發送的請求信息 Charles(青花瓷)之因此用selenium是由於一些網站須要人機交互(點擊,拖拽等等操做)
針對移動app可使用代理服務器 能夠截獲app端發送的請求信息 Charles(青花瓷)
3.接收響應
瀏覽器接受相應後會渲染頁面進行展現 沒法拿到數據 因此更多狀況下使用用瀏覽器來分析請求詳情
requests和urllib都會直接返回響應體
selenium 提供了find_element***的接口用於獲取數據
4.解析數據
re
BeautifulSoup 封裝了經常使用的正則表達式
移動端返回的/ajax返回的json數據 直接json.load
5.存儲數據
mysql等 關係型數據庫
MongoDB redis 非關係型數據庫 通常用在高併發爬蟲中
數據採集:
大數據時代來臨,數據就是核心,數據就是生產力,愈來愈多的企業開始注重收集用戶數據,而爬蟲技術是收集數據的一種重要手段。
數據的獲取:
網絡公共資源都是爲用戶準備的,爲了不被爬蟲採集,服務端會設置很是多的圖靈測試,阻止爬蟲的惡意爬取,也便是反爬措施。爬蟲開發工程師在開發爬蟲時,須要解決這些反爬措施。咱們在開發爬蟲的過程當中,有很大一部分的工做就是處理這些反爬措施。
採集的速度: 大數據時代,須要巨大的數據量,動輒千萬條的級別,甚至上億條。若是採集速度跟不上,耗時過長,那麼就達不到商業要求。通常咱們會採起併發以及分佈式來解決速度上的問題。這也是爬蟲開發過程當中的另一個重心。