一郁妈、"大數(shù)據(jù)時(shí)代",數(shù)據(jù)獲取的方式:
1. 企業(yè)生產(chǎn)的用戶數(shù)據(jù):大型互聯(lián)網(wǎng)公司有海量用戶,所以他們積累數(shù)據(jù)有天然的優(yōu)勢铸敏。
有數(shù)據(jù)意識的中小型企業(yè),也開始積累的數(shù)據(jù)。
2. 數(shù)據(jù)管理咨詢公司:通常這樣的公司有很龐大的數(shù)據(jù)采集團(tuán)隊(duì)霜运,一般會(huì)通過市場調(diào)研、問卷調(diào)查臀晃、固定的樣本檢測觉渴,
和各行各業(yè)的公司進(jìn)行合作、專家對話(數(shù)據(jù)積累很多年了徽惋,最后得出科研結(jié)果)來采集數(shù)據(jù)。
3. 政府/機(jī)構(gòu)提供的公開數(shù)據(jù):政府通過各地政府統(tǒng)計(jì)上報(bào)的數(shù)據(jù)進(jìn)行合并座韵;機(jī)構(gòu)都是權(quán)威的第三方網(wǎng)站险绘。
4. 第三方數(shù)據(jù)平臺購買數(shù)據(jù):通過各個(gè)數(shù)據(jù)交易平臺來購買各行各業(yè)需要的數(shù)據(jù),根據(jù)獲取難度不同誉碴,價(jià)格也會(huì)不同宦棺。
5. 爬蟲爬取數(shù)據(jù):如果市場上沒有我們需要的數(shù)據(jù),或者價(jià)格太高不愿意買黔帕,那么就可以招/做一個(gè)爬蟲工程師代咸,從互聯(lián)網(wǎng)上定向采集數(shù)據(jù)。
二成黄、什么是爬蟲呐芥?
爬蟲:就是抓取網(wǎng)頁數(shù)據(jù)的程序。
三奋岁、爬蟲怎么抓取網(wǎng)頁數(shù)據(jù):
網(wǎng)頁三大特征:
-1. 網(wǎng)頁都有自己唯一的URL(統(tǒng)一資源定位符)來進(jìn)行定位
-2. 網(wǎng)頁都使用HTML (超文本標(biāo)記語言)來描述頁面信息思瘟。
-3. 網(wǎng)頁都使用HTTP/HTTPS(超文本傳輸協(xié)議)協(xié)議來傳輸HTML數(shù)據(jù)。
爬蟲的設(shè)計(jì)思路:
-1. 首先確定需要爬取的網(wǎng)頁URL地址闻伶。
-2. 通過HTTP/HTTP協(xié)議來獲取對應(yīng)的HTML頁面滨攻。
-3. 提取HTML頁面里有用的數(shù)據(jù):
a. 如果是需要的數(shù)據(jù),就保存起來蓝翰。
b. 如果是頁面里的其他URL光绕,那就繼續(xù)執(zhí)行第二步。
四畜份、為什么選擇Python做爬蟲诞帐?
可以做爬蟲的語言有很多,如 PHP漂坏、Java景埃、C/C++媒至、Python等等...
- PHP 雖然是世界上最好的語言,但是他天生不是干這個(gè)的谷徙,而且對多線程拒啰、異步支持不夠好,并發(fā)處理能力很弱完慧。
爬蟲是工具性程序谋旦,對速度和效率要求比較高。
- Java 的網(wǎng)絡(luò)爬蟲生態(tài)圈也很完善屈尼,是Python爬蟲最大的對手册着。但是Java語言本身很笨重,代碼量很大脾歧。
重構(gòu)成本比較高甲捏,任何修改都會(huì)導(dǎo)致代碼的大量變動(dòng)。爬蟲經(jīng)常需要修改部分采集代碼鞭执。
- C/C++ 運(yùn)行效率和性能幾乎最強(qiáng)司顿,但是學(xué)習(xí)成本很高,代碼成型比較慢兄纺。
能用C/C++做爬蟲大溜,只能說是能力的表現(xiàn),但是不是正確的選擇估脆。
- Python 語法優(yōu)美钦奋、代碼簡潔、開發(fā)效率高疙赠、支持的模塊多付材,相關(guān)的HTTP請求模塊和HTML解析模塊非常豐富。
還有強(qiáng)大的爬蟲Scrapy棺聊,以及成熟高效的 scrapy-redis分布式策略伞租。
而且,調(diào)用其他借口也非常方便(膠水語言)
五限佩、課程介紹:
-1. Python的基本語法知識(已經(jīng)搞定)
-2. 如何抓取HTML頁面:
HTTP請求的處理葵诈,urllib、urllib2祟同、requests
處理后的請求可以模擬瀏覽器發(fā)送請求作喘,獲取服務(wù)器響應(yīng)的文件
-3. 解析服務(wù)器響應(yīng)的內(nèi)容
re、xpath晕城、BeautifulSoup4(bs4)泞坦、jsonpath、pyquery等
使用某種描述性一樣來給我們需要提取的數(shù)據(jù)定義一個(gè)匹配規(guī)則砖顷,
符合這個(gè)規(guī)則的數(shù)據(jù)就會(huì)被匹配贰锁。
-4. 如何采集動(dòng)態(tài)HTML赃梧、驗(yàn)證碼的處理
通用的動(dòng)態(tài)頁面采集:Selenium + PhantomJS(無界面):模擬真實(shí)瀏覽器加載js、ajax等非靜態(tài)頁面數(shù)據(jù)
Tesseract:機(jī)器學(xué)習(xí)庫豌熄,機(jī)器圖像識別系統(tǒng)授嘀,可以處理簡單的驗(yàn)證碼,復(fù)雜的驗(yàn)證碼可以通過手動(dòng)輸入/專門的打碼平臺
-5 Scrapy框架:(Scrapy锣险,Pyspider)
高定制性高性能(異步網(wǎng)絡(luò)框架twisted)蹄皱,所以數(shù)據(jù)下載速度非常快芯肤,
提供了數(shù)據(jù)存儲(chǔ)巷折、數(shù)據(jù)下載、提取規(guī)則等組件崖咨。
-6 分布式策略 scrapy-reids:
scrapy-redis锻拘,在Scrapy的基礎(chǔ)上添加了一套以 Redis 數(shù)據(jù)庫為核心的組件。
讓Scrapy框架支持分布式的功能掩幢,主要在Redis里做 請求指紋去重逊拍、請求分配、數(shù)據(jù)臨時(shí)存儲(chǔ)际邻。
-7 爬蟲 - 反爬蟲 - 反反爬蟲 之間的斗爭:
其實(shí)爬蟲做到最后,最頭疼的不是復(fù)雜的頁面芍阎,也是晦澀的數(shù)據(jù)世曾,而是網(wǎng)站另一邊的反爬蟲人員。
User-Agent谴咸、代理轮听、驗(yàn)證碼、動(dòng)態(tài)數(shù)據(jù)加載岭佳、加密數(shù)據(jù)血巍。
數(shù)據(jù)價(jià)值,是否值的去費(fèi)勁做反爬蟲珊随。
1. 機(jī)器成本 + 人力成本 > 數(shù)據(jù)價(jià)值述寡,就不反了,一般做到封IP就結(jié)束了叶洞。
2. 面子的戰(zhàn)爭....
爬蟲和反爬蟲之間的斗爭鲫凶,最后一定是爬蟲獲勝!
為什么衩辟?只要是真實(shí)用戶可以瀏覽的網(wǎng)頁數(shù)據(jù)螟炫,爬蟲就一定能爬下來!
六艺晴、根據(jù)使用場景:分為 通用爬蟲 聚焦爬蟲
1.通用爬蟲:搜索引擎用的爬蟲系統(tǒng)昼钻。
-1目標(biāo):就是盡可能把互聯(lián)網(wǎng)上所有的網(wǎng)頁下載下來掸屡,放到本地服務(wù)器里形成備份,
再對這些網(wǎng)頁做相關(guān)處理(提取關(guān)鍵字然评、去掉廣告)仅财,最后提供一個(gè)用戶檢索接口。
-2抓取流程:
a) 首選選取一部分已有的URL沾瓦,把這些URL放到待爬取隊(duì)列满着。
b) 從隊(duì)列里取出這些URL,然后解析DNS得到主機(jī)IP贯莺,然后去這個(gè)IP對應(yīng)的服務(wù)器里下載HTML頁面风喇,保存到搜索引擎的本地服務(wù)器。
之后把這個(gè)爬過的URL放入已爬取隊(duì)列缕探。
c) 分析這些網(wǎng)頁內(nèi)容魂莫,找出網(wǎng)頁里其他的URL連接,繼續(xù)執(zhí)行第二步爹耗,直到爬取條件結(jié)束耙考。
-3 搜索引擎如何獲取一個(gè)新網(wǎng)站的URL:
1. 主動(dòng)向搜索引擎提交網(wǎng)址:http://zhanzhang.baidu.com/linksubmit/url
2. 在其他網(wǎng)站里設(shè)置網(wǎng)站的外鏈。
3. 搜索引擎會(huì)和DNS服務(wù)商進(jìn)行合作潭兽,可以快速收錄新的網(wǎng)站倦始。
DNS:就是把域名解析成IP的一種技術(shù)。
-4 通用爬蟲并不是萬物皆可爬山卦,它也需要遵守規(guī)則:
Robots協(xié)議:協(xié)議會(huì)指明通用爬蟲可以爬取網(wǎng)頁的權(quán)限鞋邑。
Robots.txt 只是一個(gè)建議。并不是所有爬蟲都遵守账蓉,一般只有大型的搜索引擎爬蟲才會(huì)遵守枚碗。
咱們個(gè)人寫的爬蟲,就不管了铸本。
-5 通用爬蟲工作流程:爬取網(wǎng)頁 - 存儲(chǔ)數(shù)據(jù) - 內(nèi)容處理 - 提供檢索/排名服務(wù)
-6 搜索引擎排名:
1. PageRank值:根據(jù)網(wǎng)站的流量(點(diǎn)擊量/瀏覽量/人氣)統(tǒng)計(jì)肮雨,流量越高,網(wǎng)站也越值錢箱玷,排名越靠前怨规。
2. 競價(jià)排名:誰給錢多,誰排名就高汪茧。
-7 通用爬蟲的缺點(diǎn):
1. 只能提供和文本相關(guān)的內(nèi)容(HTML椅亚、Word、PDF)等等舱污,但是不能提供多媒體文件(音樂呀舔、圖片、視頻)和二進(jìn)制文件(程序、腳本)等等媚赖。
2. 提供的結(jié)果千篇一律霜瘪,不能針對不同背景領(lǐng)域的人提供不同的搜索結(jié)果。
3. 不能理解人類語義上的檢索惧磺。
為了解決這個(gè)問題颖对,聚焦爬蟲出現(xiàn)了:
聚焦爬蟲:爬蟲程序員寫的針對某種內(nèi)容的爬蟲。
面向主題爬蟲磨隘,面向需求爬蟲:會(huì)針對某種特定的內(nèi)容去爬取信息缤底,而且會(huì)保證信息和需求盡可能相關(guān)。
Python自帶的模塊:/usr/lib/python2.7/urllib2.py
Python的第三方模塊: /usr/local/lib/python2.7/site-packages
urllib2 默認(rèn)的 User-Agent:Python-urllib/2.7
User-Agent: 是爬蟲和反爬蟲斗爭的第一步番捂,養(yǎng)成好習(xí)慣个唧,發(fā)送請求帶User-Agent
response 是服務(wù)器響應(yīng)的類文件,除了支持文件操作的方法外设预,還支持以下常用的方法:
# 返回 HTTP的響應(yīng)碼徙歼,成功返回200,4服務(wù)器頁面出錯(cuò)鳖枕,5服務(wù)器問題
print response.getcode()
# 返回 返回實(shí)際數(shù)據(jù)的實(shí)際URL魄梯,防止重定向問題
print response.geturl()
# 返回 服務(wù)器響應(yīng)的HTTP報(bào)頭
print response.info()
User-Agent 歷史:
Mosaic 世界上第一個(gè)瀏覽器:美國國家計(jì)算機(jī)應(yīng)用中心
Netscape 網(wǎng)景:Netscape(支持框架),慢慢開始流行....(第一款支持框架的瀏覽器)
Microsoft 微軟:Internet Explorer(也支持框架)
第一次瀏覽器大戰(zhàn):網(wǎng)景公司失敗..消失
Mozilla 基金組織:Firefox 火狐 - (Gecko內(nèi)核)(第一款瀏覽器內(nèi)核)
User-Agent 決定用戶的瀏覽器宾符,為了獲取更好的HTML頁面效果酿秸。
IE開了個(gè)好頭,大家都開就給自己披著了個(gè) Mozilla 的外皮
Microsoft公司:IE(Trident)
Opera公司:Opera(Presto)
Mozilla基金會(huì):Firefox(Gecko)
Linux組織:KHTML (like Gecko)
Apple公司:Webkit(like KHTML)
Google公司:Chrome(like webkit)
其他瀏覽器都是IE/Chrome內(nèi)核
urllib 的 urlencode() 接收的參數(shù)是一個(gè)字典:
wd = {"wd" : "菠蘿蜜"}
urllib.urlencode(wd)
結(jié)果:wd=%E4%BC%A0%E6%99%BA%E6%92%AD%E5%AE%A2
Get 和 Post請求的區(qū)別:
Get : 請求的url會(huì)附帶查詢參數(shù)魏烫,
POST:請求的url不帶參數(shù)
對于Get請求:查詢參數(shù)在QueryString里保存
對于Post請求:查詢參數(shù)在Form表單里保存
做爬蟲最需要關(guān)注的不是頁面信息允扇,而是頁面信息的數(shù)據(jù)來源。
AJAX 方式加載的頁面则奥,數(shù)據(jù)來源一定是JSON
拿到JSON,就是拿到了網(wǎng)頁的數(shù)據(jù)
2018-10-17 Python 爬蟲簡介
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門窃肠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來包个,“玉大人,你說我怎么就攤上這事冤留”棠遥” “怎么了树灶?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長糯而。 經(jīng)常有香客問我天通,道長,這世上最難降的妖魔是什么熄驼? 我笑而不...
- 正文 為了忘掉前任像寒,我火速辦了婚禮,結(jié)果婚禮上瓜贾,老公的妹妹穿的比我還像新娘诺祸。我一直安慰自己,他們只是感情好阐虚,可當(dāng)我...
- 文/花漫 我一把揭開白布序臂。 她就那樣靜靜地躺著,像睡著了一般实束。 火紅的嫁衣襯著肌膚如雪奥秆。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼亥宿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砂沛?” 一聲冷哼從身側(cè)響起烫扼,我...
- 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碍庵,沒想到半個(gè)月后映企,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡静浴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年堰氓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苹享。...
- 正文 年R本政府宣布,位于F島的核電站抚岗,受9級特大地震影響或杠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宣蔚,卻給世界環(huán)境...
- 文/蒙蒙 一向抢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧胚委,春花似錦挟鸠、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至硅急,卻和暖如春覆享,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背营袜。 一陣腳步聲響...
- 正文 我出身青樓凤壁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親跪另。 傳聞我的和親對象是個(gè)殘疾皇子拧抖,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 對待工具應(yīng)當(dāng)是保持中立的吧免绿,最好的態(tài)度就是那句經(jīng)典的“取其精華徙鱼,去其糟粕”。工具的存在本身并沒有對錯(cuò)针姿,用的...
- 最初想看這本《品牌思維》是因?yàn)榕笥炎约鹤龅姆b品牌距淫,面世三年了,質(zhì)量上乘婶希,做工設(shè)計(jì)都高于市場的普遍水準(zhǔn)榕暇,也不算貴,...