【Python爬蟲】初識(shí)爬蟲(1)

寫在前面

之前寫了兩篇關(guān)于爬蟲的文章微信好友大揭秘平酿,趙雷到底在唱什么塞椎,純粹是自己的興趣引導(dǎo)自己學(xué)習(xí)爬蟲尔许,關(guān)注里應(yīng)該有好多對(duì)爬蟲感興趣的小伙伴,為了鞏固自己的爬蟲知識(shí)诀浪,從今天開始更新python爬蟲這個(gè)基礎(chǔ)教程棋返,自己準(zhǔn)備了挺長(zhǎng)時(shí)間整理了自己的學(xué)習(xí)筆記,希望能給初學(xué)者帶來一點(diǎn)幫助雷猪,在這個(gè)教程里我會(huì)給大家介紹爬蟲常用的庫(kù)跟大家做幾個(gè)有意思的Demo睛竣。這篇文章主要是讓大家了解爬蟲和爬蟲需要的基礎(chǔ)知識(shí),話不多說春宣,我們開始吧酵颁。

什么是爬蟲?

爬蟲就是請(qǐng)求網(wǎng)站并提取數(shù)據(jù)的自動(dòng)化程序月帝,從技術(shù)層面來說就是通過程序模擬瀏覽器請(qǐng)求站點(diǎn)的行為躏惋,把站點(diǎn)返回的HTML代碼/JSON數(shù)據(jù)/二進(jìn)制數(shù)據(jù)(圖片、視頻) 爬到本地嚷辅,進(jìn)而提取自己需要的數(shù)據(jù)簿姨,存放起來使用。舉個(gè)小栗子來加深印象簸搞,如果我們把互聯(lián)網(wǎng)比作一張大的蜘蛛網(wǎng)扁位,數(shù)據(jù)便是存放于蜘蛛網(wǎng)的各個(gè)節(jié)點(diǎn),而爬蟲就是一只小蜘蛛趁俊,沿著網(wǎng)絡(luò)抓取自己的數(shù)據(jù)域仇。

爬蟲的基本流程

發(fā)起請(qǐng)求,通過使用HTTP庫(kù)向目標(biāo)站點(diǎn)發(fā)起請(qǐng)求寺擂,即發(fā)送一個(gè)Request暇务,請(qǐng)求可以包含額外的headers等信息泼掠,并等待服務(wù)器響應(yīng)。
獲取響應(yīng)內(nèi)容如果服務(wù)器能正常響應(yīng)垦细,則會(huì)得到一個(gè)Response择镇,Response的內(nèi)容就是所要獲取的頁(yè)面內(nèi)容,其中會(huì)包含:html括改,json腻豌,圖片,視頻等嘱能。
解析內(nèi)容得到的內(nèi)容可能是Html數(shù)據(jù)吝梅,可以使用正則表達(dá)式,第三方解析庫(kù)如Beautifulsoup惹骂,pyquery等憔涉,要解析json數(shù)據(jù)可以使用json模塊,二進(jìn)制數(shù)據(jù)析苫,可以保存或者進(jìn)一步的處理兜叨。
保存數(shù)據(jù)保存的方式比較多元,可以存入數(shù)據(jù)庫(kù)也可以使用文件的方式進(jìn)行保存衩侥。
字符串的區(qū)別和轉(zhuǎn)化
為什么要掌握python3字符串的相關(guān)知識(shí)国旷?
在我們爬蟲過程中url,響應(yīng)內(nèi)容茫死,提取的數(shù)據(jù)都是字符串跪但,因此我們需要去了解字符串的相關(guān)知識(shí)。大家都知道bytes是一個(gè)二進(jìn)制峦萎,當(dāng)然互聯(lián)網(wǎng)的數(shù)據(jù)都是以二進(jìn)制的方式傳輸?shù)穆啪茫籹tr是unicode的呈現(xiàn)形式,后續(xù)的爬蟲過程中少不了兩者的相互轉(zhuǎn)換爱榔,str使用encode方法轉(zhuǎn)換成bytes被环,bytes通過decode轉(zhuǎn)化為str,值的引起注意的是編碼方式解碼方式必須一樣详幽,否則就會(huì)出現(xiàn)亂碼筛欢。
Http和Https

我們?cè)谂老x過程中需要運(yùn)用到Http的相關(guān)知識(shí),在這里簡(jiǎn)單的給大家介紹Http和Https的相關(guān)概念唇聘。
HTTP是超文本傳輸協(xié)議版姑,被用于在Web瀏覽器和網(wǎng)站服務(wù)器之間傳遞信息,HTTP協(xié)議以明文方式發(fā)送內(nèi)容迟郎,不提供任何方式的數(shù)據(jù)加密剥险,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文,就可以直接讀懂其中的信息宪肖,默認(rèn)端口號(hào):80表制。
為了解決HTTP協(xié)議的這一缺陷宇姚,需要使用另一種協(xié)議:安全套接字層超文本傳輸協(xié)議HTTPS,為了數(shù)據(jù)傳輸?shù)陌踩蛲梗琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議,SSL依靠證書來驗(yàn)證服務(wù)器的身份阱持,并為瀏覽器和服務(wù)器之間的通信加密夭拌,默認(rèn)端口號(hào):443。

URL的形式
這是我們需要了解一個(gè)url的基本形式衷咽。
scheme:協(xié)議 例如http https ftp
host:服務(wù)器的ip地址或者域名
port:服務(wù)器的端口鸽扁,協(xié)議的默認(rèn)端口是80或者443
path:訪問資源的路徑
query-string :參數(shù),發(fā)送給http服務(wù)器的數(shù)據(jù)镶骗,以桶现?開頭 &鏈接
anchor:錨 跳轉(zhuǎn)到網(wǎng)頁(yè)的指定錨點(diǎn)位置
可以對(duì)應(yīng)的看一下百度網(wǎng)址:
https://www.baidu.com/baidu?wd=%E7%99%BE%E5%BA%A6&tn=monline_dg&ie=utf-8

Http請(qǐng)求格式
這里帶大家簡(jiǎn)單的了解Http請(qǐng)求的格式:
Host:主機(jī)和端口號(hào)
Connection:連接類型
User-Agent:瀏覽器名稱
Accept:傳輸文件類型
Accept-Encoding:文件編碼格式
Cookie:cookie
X-Requested-With:Ajax異步請(qǐng)求

瀏覽器中可以查看具體請(qǐng)求頭數(shù)據(jù),以百度為例:
GET / HTTP/1.1 使用Get方法 Http協(xié)議
Host: www.baidu.com
Connection: keep-alive 表示長(zhǎng)鏈接鼎姊,想要復(fù)用上次的鏈接骡和,目的提高響應(yīng)時(shí)間
Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, /; q=0.01 瀏覽器身份標(biāo)識(shí)
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BAIDUID=E67EB919B93326D6D11DE4F2688038F8:FG=1;
Request與Response
瀏覽器就發(fā)送消息給該網(wǎng)址所在的服務(wù)器,這個(gè)過程叫做HTTP Request相寇。服務(wù)器收到瀏覽器發(fā)送的消息后慰于,能夠根據(jù)瀏覽器發(fā)送消息的內(nèi)容,做相應(yīng)處理唤衫,然后把消息回傳給瀏覽器婆赠。這個(gè)過程叫做HTTP Response。瀏覽器收到服務(wù)器的Response信息后佳励,會(huì)對(duì)信息進(jìn)行相應(yīng)處理休里,然后展示。
Resquest中主要包含請(qǐng)求方式赃承,請(qǐng)求頭妙黍,請(qǐng)求體和請(qǐng)求URL,Response中包含響應(yīng)狀態(tài)瞧剖,響應(yīng)頭废境,響應(yīng)體。

抓取的數(shù)據(jù)都是什么樣的筒繁?

我們爬取來的數(shù)據(jù)一般都是網(wǎng)頁(yè)文本(HTML文檔噩凹、Json格式文本),圖片或者視頻(獲取到的是二進(jìn)制文件毡咏,相應(yīng)的保存為圖片或者視頻格式)驮宴。

怎樣解析數(shù)據(jù)

在將我們抓取到的數(shù)據(jù)進(jìn)行解析的時(shí)候需要用到下面的方法:直接處理,json解析呕缭,正則表達(dá)式堵泽,BeautifulSoup修己,PyQuery,XPath迎罗。

總結(jié)

1睬愤、爬蟲流程:
請(qǐng)求--->獲取響應(yīng)--->解析--->存儲(chǔ)
2、爬蟲所需工具:
請(qǐng)求庫(kù):requests,selenium(可以驅(qū)動(dòng)瀏覽器解析渲染CSS和JS纹安,但有性能劣勢(shì)(有用沒用的網(wǎng)頁(yè)都會(huì)加載)
解析庫(kù):正則尤辱,beautifulsoup,pyquery
存儲(chǔ)庫(kù):文件厢岂,MySQL光督,Mongodb,
【推薦閱讀】

【LeetCode】匯總貼(NO.1-20)

機(jī)器學(xué)習(xí)實(shí)戰(zhàn)--住房月租金預(yù)測(cè)(1)

用Python來一場(chǎng)人工造雪

Python人工造雪2.0(動(dòng)態(tài)版)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末塔粒,一起剝皮案震驚了整個(gè)濱河市结借,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卒茬,老刑警劉巖船老,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異圃酵,居然都是意外死亡努隙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門辜昵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荸镊,“玉大人,你說我怎么就攤上這事堪置」妫” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵舀锨,是天一觀的道長(zhǎng)岭洲。 經(jīng)常有香客問我,道長(zhǎng)坎匿,這世上最難降的妖魔是什么盾剩? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮替蔬,結(jié)果婚禮上告私,老公的妹妹穿的比我還像新娘。我一直安慰自己承桥,他們只是感情好驻粟,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著凶异,像睡著了一般蜀撑。 火紅的嫁衣襯著肌膚如雪挤巡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天酷麦,我揣著相機(jī)與錄音矿卑,去河邊找鬼。 笑死沃饶,一個(gè)胖子當(dāng)著我的面吹牛母廷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绍坝,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼苔悦!你這毒婦竟也來了轩褐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤玖详,失蹤者是張志新(化名)和其女友劉穎把介,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蟋座,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拗踢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了向臀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巢墅。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖券膀,靈堂內(nèi)的尸體忽然破棺而出君纫,到底是詐尸還是另有隱情,我是刑警寧澤芹彬,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布蓄髓,位于F島的核電站,受9級(jí)特大地震影響舒帮,放射性物質(zhì)發(fā)生泄漏会喝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一玩郊、第九天 我趴在偏房一處隱蔽的房頂上張望肢执。 院中可真熱鬧,春花似錦译红、人聲如沸蔚万。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)反璃。三九已至昵慌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間淮蜈,已是汗流浹背斋攀。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梧田,地道東北人淳蔼。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像裁眯,于是被迫代替她去往敵國(guó)和親鹉梨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理穿稳,服務(wù)發(fā)現(xiàn)存皂,斷路器,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 10,871評(píng)論 6 13
  • 爬蟲概述 1. 目錄清單 爬蟲簡(jiǎn)介 通用爬蟲和聚焦爬蟲 網(wǎng)絡(luò)請(qǐng)求那些事兒 網(wǎng)絡(luò)數(shù)據(jù)抓包分析 2. 章節(jié)內(nèi)容 2.1...
    小皇帝s閱讀 685評(píng)論 0 1
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架逢艘,建立于...
    Hsinwong閱讀 22,315評(píng)論 1 92
  • HTTP基本原理 URI旦袋、URL、URN(Uninform Resource) URI(Identifier):統(tǒng)...
    GHope閱讀 2,065評(píng)論 2 26