爬蟲總結(jié)

大數(shù)庫時代:數(shù)據(jù)如何產(chǎn)生?
1. 打的公司打的企業(yè):通過用戶產(chǎn)生的數(shù)據(jù)
2.大的數(shù)據(jù)平臺:通過收集或者和其他企業(yè)或者公司合作
3.國家政府/大的機構(gòu):通過省縣鄉(xiāng)或者其他方式統(tǒng)計匯總產(chǎn)生的
4.?dāng)?shù)據(jù)咨詢公司:通過收集或者和其他企業(yè)或者公司合作,會根據(jù)數(shù)據(jù)做分析對比形成報表
,給你做數(shù)據(jù)參考
5.最終假如以上方式都不能滿足的時候,我們就需要一個爬蟲工程師,去專門做數(shù)據(jù)的提取

1.什么是爬蟲?
 就是一段自動獲取互聯(lián)網(wǎng)數(shù)據(jù)的程序

2.爬蟲有什么用途?
 搜索引擎
 比價工具(慧慧購物助手)
 大的資訊網(wǎng)站(jobbole,今日頭條...)

網(wǎng)站的三大特性:
1.每一個資源都一個url(統(tǒng)一資源定位符),是唯一的
2.網(wǎng)頁都是使用HTML(超文本)文本展示數(shù)據(jù)的
3.通過HTTP/HTTPS(超文本傳輸協(xié)議),獲取和傳遞HTML

3.如何實現(xiàn)一個爬蟲
 (1).找到目標url
 (2).根據(jù)url發(fā)起請求
 (3).解析響應(yīng)結(jié)果:
   a).提取目標數(shù)據(jù)
b).如何存在新的url,進一步提取(會執(zhí)行1-3這個循環(huán))
 (4).爬蟲結(jié)束:所有符合條件的url請求全部獲取完畢,意味著爬蟲結(jié)束

4.為什么要使用python做爬蟲?
PHP,java,c/c++,python .....

PHP:可以用來做爬蟲,但是對多任務(wù)的支持不是太好,爬蟲是對像驢要求比較高的,
  所以說PHP天生不是干這個事情的.

JAVA:生態(tài)圈很完善,并且用途非常廣泛(后端,移動端..),java做爬蟲是
   python最大的競爭對手,但是java代碼量比較大,重構(gòu)的成本比較高.

c/c++:肯定是可以完成爬蟲這件事的,并且運行的效率是非常高的,但是學(xué)習(xí)的門檻
   非常高,各個模塊可能需要你自己封裝和定制.(能使用c/c++的人一般比較nb)

python:語法簡介,代碼優(yōu)美,可讀性高,并且對各模塊的支持比較好,有很多強大的三方包,
    對多任務(wù)的處理也比較好,urllib,requests都能夠很好的幫助我們實現(xiàn)一個爬蟲項目,
    解析的庫也非常多(lxml,bs4,pyquery...),并且還有強大的scrapy爬蟲框架
和scrapy_redis分布式爬蟲框架.并且python作為一門膠水語言,對于其他語言的
    調(diào)度也是非常方便的.

爬蟲分為兩類:
通用爬蟲:通用爬蟲是瀏覽器的重要組成部分,將互聯(lián)網(wǎng)上所有的網(wǎng)頁下載到本地,
     做了一個鏡像備份,提取重要數(shù)據(jù)(過濾數(shù)據(jù),分詞,去廣告等等等..)

步驟其實跟上面介紹的類似
搜索引擎的爬取的url通過什么方式獲取的??
1.通過網(wǎng)站的外鏈
2.通過網(wǎng)頁提交url:(百度:http://zhanzhang.baidu.com/linksubmit/url)
3.各大搜索引擎公司也會和DNS服務(wù)商合作

DNS:將我們的域名轉(zhuǎn)化為ip的一種技術(shù)

通用爬蟲(搜索引擎)的缺點:
1.需要遵循robot協(xié)議:Robots協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標準”(Robots Exclusion Protocol),網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。
2.搜索引擎返回的結(jié)果千篇一律沒有很好的針對性,不能夠特殊的用戶群體返回對應(yīng)的數(shù)據(jù)
3.搜索引擎一般情況下獲取的是文本信息,處理圖像,音頻,視頻多媒體還是有困難的.

聚焦爬蟲:是面向主題的爬蟲,由需求產(chǎn)生的,是一種定向的爬蟲,
在爬取網(wǎng)頁數(shù)據(jù)的時候,會對網(wǎng)頁數(shù)據(jù)進行一些賽選,保證之抓取和
需求相關(guān)的數(shù)據(jù),以后我們更多的就是實現(xiàn)聚焦爬蟲

做爬蟲需要掌握的基本知識

1.python的基本語法

  1. 前端知識
  2. 數(shù)據(jù)持久化的知識
  3. 了解基本的反爬蟲的手段(header請求頭,驗證碼,cookies,代理)
  4. 靜態(tài)頁面和動態(tài)頁面(ajax,js),selenium(獲取的頁面源碼是經(jīng)過瀏覽器渲染之后的最終結(jié)果)
  5. 多任務(wù)處理,爬蟲框架,分布式爬蟲等等

HTTP:超文本傳輸協(xié)議,主要使用來將html文本傳輸?shù)奖镜貫g覽器.

HTTPS:作用和HTTP一致,只是多了SSL(安全套接字層),保證數(shù)據(jù)>傳輸?shù)陌踩?br>   ?。?建立一個安全有效的數(shù)據(jù)傳輸通道,保證數(shù)聚的安全性
   2.保證網(wǎng)站的真實性和有效性

url的組成部分:

1.scheme:協(xié)議
2.host:指的是域或者ip
3.port:端口
4.path:資源路徑
5.query-string:請求的參數(shù)
6.anchor:錨點,主要是實現(xiàn)頁面的定位作用

請求頭:

User-Agent:模擬瀏覽器加載
Cookies:攜帶cookies第一可以維持會話,告訴瀏覽器用戶的身份信息
Refere:告訴瀏覽器,當(dāng)前請求,是從哪個頁面發(fā)起的.

常見的狀態(tài)碼:

2xx:表示服務(wù)器成功接收請求并已完成整個處理過程。
200(OK 請求成功)。

3xx:為完成請求,客戶需進一步細化請求。例如:請求的資源已經(jīng)移動一個新地址、 常用
301: 永久重定向
302:臨時重定向(所請求的頁面已經(jīng)臨時轉(zhuǎn)移至新的url)

4xx:客戶端的請求有錯誤.
400:錯誤請求,服務(wù)器無法解析請求
401:未授權(quán),沒有進行身份驗證
403:服務(wù)器拒絕訪問
404:服務(wù)器無法找到被請求的網(wǎng)頁
408:請求超時

5xx:服務(wù)器端出現(xiàn)錯誤
500:服務(wù)器內(nèi)部錯誤
501:服務(wù)器不具備完成請求的功能
503:服務(wù)器不可用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容