數(shù)據(jù)如何產(chǎn)生兼蜈?
1.大公司亩冬,大企業(yè):通過用戶產(chǎn)生
2.大的數(shù)據(jù)平臺(tái):通過收集或者其他企業(yè)或者公司合作
3.國家或政府機(jī)構(gòu):通過省縣鄉(xiāng)或者其他方式統(tǒng)計(jì)匯總產(chǎn)生
4.數(shù)據(jù)咨詢公司:通過收集或者其他企業(yè)或者合作公司词顾,會(huì)根據(jù)數(shù)據(jù)做分析對(duì)比形成報(bào)表映琳,給你做參考
- 以上方式都用不上的情況下就要用到爬蟲
什么是爬蟲牙咏?
1.自動(dòng)獲取網(wǎng)頁的數(shù)據(jù)
爬蟲有什么用途早直?
1.搜索引擎
網(wǎng)站的三大特性:
每一個(gè)資源都有一個(gè)url(資源定位符),是唯一的
網(wǎng)頁都是使用HTML(超文本)展示數(shù)據(jù)的
通過HTTP/HTTPS(超文本傳輸協(xié)議)祷肯,獲取和傳遞HTML
如何實(shí)現(xiàn)一個(gè)爬蟲沉填?
找到目標(biāo)url
根據(jù)url發(fā)起請(qǐng)求
解析響應(yīng)結(jié)果:提取目標(biāo)數(shù)據(jù)疗隶;如何存在新的url,需要進(jìn)一步提纫砟帧(會(huì)執(zhí)行1-3這個(gè)循環(huán))
爬蟲結(jié)束:所有符合條件的url請(qǐng)求全部獲取完畢斑鼻,意味著爬蟲結(jié)束
為什么要使用python做爬蟲?
Python:語法簡(jiǎn)潔橄碾,代碼優(yōu)美卵沉,可讀性比較高,并且對(duì)各模塊的支持比較好法牲,有很多強(qiáng)大的三方包史汗,對(duì)多任務(wù)的處理也比較好,urllib拒垃,request都能夠很好的幫助我們實(shí)現(xiàn)一個(gè)爬蟲項(xiàng)目停撞,解析的庫也非常多(lxml,bs4悼瓮, pyquery...)戈毒,并且還有強(qiáng)大的scrapy爬蟲框架和scrapy_redis分布式爬蟲框架,并且python作為一門膠水語言横堡,對(duì)于其他語言的調(diào)度也是非常方便的埋市。
爬蟲分為兩類:
通用爬蟲:通用爬蟲是瀏覽器的重要組成部分,將互聯(lián)網(wǎng)上所有的網(wǎng)頁下載到本地命贴,做了一個(gè)鏡像備份道宅,提取重要數(shù)據(jù)(過濾數(shù)據(jù),分詞胸蛛,去廣告等等...)污茵; 步驟跟上面的類似 搜索引擎的爬取的url通過什么方式獲取的? 一. 通過網(wǎng)站的外鏈 二. 通過網(wǎng)頁提交url:(百度:<u>http://zhanzhang.baidu.com/linksubmit/url)</u> 三. 各大搜索引擎公司也會(huì)和DNS服務(wù)商合作 通用爬蟲的缺點(diǎn):需要遵守robot協(xié)議(爬蟲協(xié)議葬项,機(jī)器人協(xié)議)泞当;搜索引擎返回的結(jié)果千篇一律沒有很好的針對(duì)性,不能夠?qū)μ厥獾挠脩羧后w返回對(duì)應(yīng)的數(shù)據(jù)民珍;搜索引擎一般情況下獲取的是文本信息襟士,處理圖像,音頻嚷量,視頻多媒體還是有困難的
聚焦爬蟲: 是面向主題的爬蟲敌蜂,由需求產(chǎn)生的,是一種定向的爬蟲津肛,在爬取網(wǎng)頁數(shù)據(jù)的時(shí)候,會(huì)對(duì)網(wǎng)頁數(shù)據(jù)進(jìn)行一些篩選汗贫,保證只抓取和需求相關(guān)的數(shù)據(jù)
做爬蟲需要掌握的基本知識(shí):
? Python的基本語法
? 前端知識(shí)
? 數(shù)據(jù)持久化的知識(shí)(數(shù)據(jù)庫身坐,文件儲(chǔ)存)
? 了解基本的反爬蟲的手段(header請(qǐng)求頭秸脱,驗(yàn)證碼,cookie部蛇,代理)
? 靜態(tài)頁面和動(dòng)態(tài)頁面(Ajax摊唇,js,selenium(獲取的頁面源碼是經(jīng)過瀏覽器渲染之后的最終結(jié)果))
? 多任務(wù)處理涯鲁,爬蟲框架巷查,分布式爬蟲等等
HTTP:超文本傳輸協(xié)議,主要使用來將html文件傳輸?shù)奖镜貫g覽器
HTTPS:作用和HTTP一致抹腿,只是多了SSL(安全套接字)岛请,保證數(shù)據(jù)傳輸?shù)陌踩裕?/p>
a. 建立一個(gè)安全有效的數(shù)據(jù)傳輸通道,保證數(shù)據(jù)的安全性
b. 確定網(wǎng)站的安全性和有效性
- url組成部分: 基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
· scheme:協(xié)議(例如:http, https, ftp)
· host:服務(wù)器的IP地址或者域名
· port#:服務(wù)器的端口(如果是走協(xié)議默認(rèn)端口警绩,缺省端口80)
· path:訪問資源的路徑
· query-string:參數(shù)崇败,發(fā)送給http服務(wù)器的數(shù)據(jù)
· anchor:錨(跳轉(zhuǎn)到網(wǎng)頁的指定錨點(diǎn)位置)
請(qǐng)求頭: User-Agent: 模擬瀏覽器加載 Cookies: 攜帶cookies第一可以維持會(huì)話,告訴瀏覽器用戶的身份信息 Refere: 告訴瀏覽器當(dāng)前請(qǐng)求是從哪個(gè)頁面發(fā)起的
常見的狀態(tài)嗎: 100~199:表示服務(wù)器成功接收部分請(qǐng)求肩祥,要求客戶端繼續(xù)提交其余請(qǐng)求才能完成整個(gè)處理過程后室。 200~299:表示服務(wù)器成功接收請(qǐng)求并已完成整個(gè)處理過程。常用200(OK 請(qǐng)求成功)混狠。 300~399:為完成請(qǐng)求岸霹,客戶需進(jìn)一步細(xì)化請(qǐng)求。例如:請(qǐng)求的資源已經(jīng)移動(dòng)一個(gè)新地址将饺、 常用302(所請(qǐng)求的頁面已經(jīng)臨時(shí)轉(zhuǎn)移至新的url)贡避、 307和304(使用緩存資源)。 400~499:客戶端的請(qǐng)求有錯(cuò)誤俯逾,常用404(服務(wù)器無法找到被請(qǐng)求的頁面)贸桶、403(服務(wù)器拒絕訪問,權(quán)限不夠)桌肴,401(未認(rèn)證)皇筛。 500~599:服務(wù)器端出現(xiàn)錯(cuò)誤,常用500(請(qǐng)求未完成坠七。服務(wù)器遇到不可預(yù)知的情況)水醋。