大數據時代:數據如何產生?
1、大的公司打的企業:通過用戶產生的數據
2、大的數據平臺:通過收集或者和其他的企業或者公司合作
3、國家政府 大的機構:通過省縣鄉或者其他方式統計匯總產生的
4、數據咨詢公司:通過收集或者和其它企業或者公司合作,會根據數據做分析對比形成報表
5、最終假如以上方式都不能滿足的時候,我們就需要一個爬蟲工程師,去專門坐數據的提取
1:什么是爬蟲?
就是一段自動獲取互聯網數據的程序
2 爬蟲有什么用途?
搜索引擎
比價工具(慧慧購物助手)
大的咨詢網站(今日頭條,jobbole)
網站的三大特性:
1.每一個資源都有一個url(統計資源定位符)
2,網頁都是使用HTML(超文本)文本展示數據的
3,通過HTTP/HTTPS(超文本傳輸協議),獲取和傳遞HTML
3 如何實現一個爬蟲
(1)找到目標url
(2)根據url發起請求
(3)解析響應結果:
a)提取目標數據
b)如果存在新的url 進一步提取(會執行1-3這個循環)
(4)爬蟲結束:所有符合條件的url請求全部獲取完畢 意味著爬蟲結束
4 為什么要使用python做爬蟲?
PHP,JAVA,C,C++,Python...都可以做爬蟲
PHP:可以用來做爬蟲,但是對于多任務的支持不是太好,爬蟲是對效率要求比較高的,所以說PHP天生不是干這個事情的
JAVA:生態圈很完善,并且用途非常廣泛(后端,移動端)java做爬蟲是python最大的競爭對手 但是java代碼量比較大,重構的成本比較高
C/C++:肯定是可以完成爬蟲這件事的,并且運行的效率是非常高的,但是學習的門檻非常高,各個模塊可能需要你自己封裝和定制,(能使用C/C++的人一般比較nb)
Python:語法簡介 代碼優美 可讀性高 并且對各模塊的支持比較好 有很多強大的三方包 對于多任務的處理比較好 urllib,requests都能夠很好的幫助我們實現一個爬蟲項目
對解析庫也非常多(lxml,bs4,pyquery...)并且還有強大的scrapy爬蟲框架和scrapy_redis分布式爬蟲框架 并且python作為一門膠水語言 對于其他語言的調度也是非常方便的
爬蟲分為兩類:
通用爬蟲:通用爬蟲是瀏覽器的重要組成部分 將互聯網上所有的網頁下載到本地 做了一個鏡像備份 提取重要數據(過濾數據 分詞 去廣告...)
步驟其實跟上面介紹的類似
搜索引擎的爬取的url通過上面方式獲取?
1 通過網站的外鏈
2 通過網頁提交url (百度:http://zhanzhang.baidu.com/linksubmit/url)
3 各大搜索引擎公司也會和DNS服務商合作
DNS:將我們的域名轉化為ip的一種技術
通用爬蟲(搜索引擎)的特點:
1需要遵循robot協議:Robots協議(也稱為爬蟲協議、機器人協議等)的全稱是“網絡爬蟲排除標準”(Robots Exclusion Protocol),
網站通過Robots協議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。
2搜索引擎返回的結果千篇一律沒有很好的針對性 不能夠根據特殊的用戶群體返回對應的數據
3搜索引擎一般情況下是文本信息 處理圖像 音頻 視頻對媒體還是有困難的
聚焦爬蟲:
是面向主題的爬蟲 由需求產生的 是一種定向的爬蟲 在爬取網頁數據的時候 會對網頁數據進行一些篩選 保證只抓取和需求相關的數據,以后我們更多的就是實現聚焦爬蟲
做爬蟲需要掌握的基礎知識:
1python的基本語法
2前端知識
3數據持久化的知識
4了解基本的反爬蟲的手段 (header請求 驗證碼 cokkies 代理)
5靜態頁面和動態頁面(ajax,js.),selenium(獲取的頁面源碼是經過瀏覽器渲染之后的最終結果)
6多任務處理 爬蟲框架 分布式爬蟲等等
HTTP:超文本傳輸協議,主要是用來將html文本傳輸到本地瀏覽器
HTTPS:作用和HTTP一致,只是多了SSL(安全套接字層) 保證數據傳輸的安全性
1建立一個安全有效的數據傳輸通道 保證數據的安全性
2保證網站真實性和有效性
url的組成部分:
1scheme:協議
2host:指的是域或者ip
3port:端口
4path:路徑
5query-string:請求參數
6anchor:錨點 主要是實現頁面的定位作用
請求頭:
User-Agent:模擬瀏覽器加載
Cookies:攜帶cookies第一可以維持會話 告訴瀏覽器用戶的身份信息
Refere:告訴瀏覽器 當前請求 是從哪個頁面發起的
常見狀態碼:
100~199:表示服務器成功接收部分請求,要求客戶端繼續提交其余請求才能完成整個處理過程。
2xx:表示服務器成功接收請求并已完成整個處理過程。
200(OK 請求成功)。
3xx:為完成請求,客戶需進一步細化請求。例如:請求的資源已經移動一個新地址、 常用
301: 永久重定向
302:臨時重定向(所請求的頁面已經臨時轉移至新的url)
4xx:客戶端的請求有錯誤.
400:錯誤請求,服務器無法解析請求
401:未授權,沒有進行身份驗證
403:服務器拒絕訪問
404:服務器無法找到被請求的網頁
408:請求超時
5xx:服務器端出現錯誤
500:服務器內部錯誤
501:服務器不具備完成請求的功能
503:服務器不可用