產(chǎn)品經(jīng)理學(xué)Python&爬蟲(chóng)(二):Python基礎(chǔ)及爬蟲(chóng)入門(mén)

寫(xiě)在前面

我們?cè)趯W(xué)習(xí)任何一門(mén)技術(shù)的時(shí)候,往往都會(huì)看很多技術(shù)博客叠荠,很多程序員也會(huì)寫(xiě)自己的技術(shù)博客匿沛。但是我想寫(xiě)的這些不是純技術(shù)博客,我暫時(shí)也沒(méi)有這個(gè)能力寫(xiě)出 Python 或者爬蟲(chóng)相關(guān)的技術(shù)博客來(lái)榛鼎。我只是作為一個(gè)初學(xué) Python 和爬蟲(chóng)的產(chǎn)品逃呼,把我學(xué)習(xí)的過(guò)程和心得記錄下來(lái),供大家參考者娱。

我會(huì)給到我在學(xué)習(xí)過(guò)程中參考的技術(shù)博客鏈接抡笼,在此也對(duì)他們的無(wú)私奉獻(xiàn)表示感謝。

Python 基礎(chǔ)

先來(lái)點(diǎn)開(kāi)胃菜

可能對(duì)于很多人來(lái)說(shuō)黄鳍, Python 最大的特點(diǎn)就是“簡(jiǎn)短”蔫缸。那么用Python 寫(xiě)程序到底有多短呢?舉個(gè)栗子~

我有兩個(gè)室友际起,一個(gè)前端,一個(gè)后臺(tái)吐葱。他們分別用 JavaScript 和 C# 實(shí)現(xiàn)下面這個(gè)功能街望,需要多少行代碼呢?

輸出 (0:100)之間的弟跑,【1X1, 2X2 ··· 100X100】中 2 的倍數(shù)

JavaScript 用了10行灾前,C# 用了5行 (當(dāng)然,這也跟他們當(dāng)時(shí)的技術(shù)水平有關(guān)孟辑。一般來(lái)說(shuō)哎甲,用任何語(yǔ)言實(shí)現(xiàn)這個(gè)功能應(yīng)該都不需要10行代碼)

那么用 Python 呢?只需要一行

print [x * x for x in range(1, 100) if x % 2 == 0]

Python 代碼簡(jiǎn)短明確饲嗽,相對(duì)來(lái)說(shuō)比較好入門(mén)炭玫,適合在課余和工作之余 的時(shí)間去學(xué)習(xí),所以大家不用擔(dān)心自己沒(méi)有時(shí)間貌虾。

PS. 我無(wú)意比較各語(yǔ)言的好壞吞加,我知道 C、C++ 的運(yùn)行效率比 Python 高很多,我也相信有大牛能夠通過(guò)其他語(yǔ)言只用一行代碼來(lái)實(shí)現(xiàn)衔憨。在此只是簡(jiǎn)述 Python 簡(jiǎn)短易入門(mén)叶圃。

Python 版本

如果你有百度過(guò) Python,那么你應(yīng)該知道践图,Python 目前有兩個(gè)主要的版本: Python 2.7.X 和 Python 3.3.X掺冠,而且這兩者是不完全兼容的。

目前來(lái)說(shuō)码党,Python 2.X 的教程和庫(kù)更多德崭,更好學(xué)。但 Python 3.X 更先進(jìn)闽瓢,而且解決了 Python 2.X 在使用中文的時(shí)候容易出現(xiàn)的編碼錯(cuò)誤問(wèn)題接癌。

這里不評(píng)價(jià)哪個(gè)版本更好,但是我目前用的是 Python 2.7扣讼,因此這里所說(shuō)的所有博客缺猛、教程、語(yǔ)法和庫(kù)···都是基于 Python 2.7

開(kāi)始學(xué)習(xí)吧

我在學(xué)習(xí) Python 基礎(chǔ)的時(shí)候主要參考了 廖雪峰的Python 教程 椭符,他的博客通俗易懂荔燎,在“技術(shù)博客界”也比較出名。

但是這個(gè)教程幾乎涵蓋了 Python 的所有知識(shí)教程销钝,如果只是需要用 Python 寫(xiě)一個(gè)爬蟲(chóng)或者其他小腳本的話(huà)有咨,實(shí)際上是不需要全部看完的(當(dāng)然如果你愿意也可以)。如果你有其他語(yǔ)言的基礎(chǔ)蒸健,那么可以只看個(gè)大概座享,了解一些基本的語(yǔ)法和特性就行了;如果你沒(méi)有其他語(yǔ)言的基礎(chǔ)似忧,甚至對(duì)編程一竅不通渣叛,那么建議你多學(xué)習(xí)一些,最好看到“錯(cuò)誤盯捌、調(diào)試和測(cè)試”那一章淳衙,并且一定要把其中每一篇的示例代碼放到自己的編譯器里跑一遍(不要復(fù)制,自己敲)饺著,這樣才能理解其中的一些原理箫攀。

我大學(xué)的專(zhuān)業(yè)是軟件工程,因此有一定的 C++ 基礎(chǔ)幼衰。我大概只看到“高級(jí)特性”那一章靴跛,然后就開(kāi)始學(xué)習(xí)爬蟲(chóng)了。

爬蟲(chóng)入門(mén)

網(wǎng)絡(luò)爬蟲(chóng)(又被稱(chēng)為網(wǎng)頁(yè)蜘蛛塑顺,網(wǎng)絡(luò)機(jī)器人汤求,在 FOAF 社區(qū)中間俏险,更經(jīng)常的稱(chēng)為網(wǎng)頁(yè)追逐者),是一種按照一定的規(guī)則扬绪,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本竖独。另外一些不常使用的名字還有螞蟻、自動(dòng)索引挤牛、模擬程序或者蠕蟲(chóng)莹痢。——百度百科

網(wǎng)頁(yè)知識(shí)簡(jiǎn)介

一般來(lái)說(shuō)墓赴,爬蟲(chóng)獲取的是網(wǎng)頁(yè)上的內(nèi)容竞膳。我們通過(guò)瀏覽器上網(wǎng)時(shí),首先會(huì)對(duì)該網(wǎng)站的服務(wù)器發(fā)送一個(gè)訪(fǎng)問(wèn)請(qǐng)求诫硕,服務(wù)器收到請(qǐng)求后坦辟,把我們需要的數(shù)據(jù)傳回來(lái)給到瀏覽器,然后瀏覽器解析數(shù)據(jù)并展現(xiàn)給我們章办。

而這些數(shù)據(jù)在被瀏覽器解析之前锉走,其實(shí)就是一些代碼。我們?cè)跒g覽器頁(yè)面按一下F12藕届,就能看到該網(wǎng)址的源代碼挪蹭。

爬蟲(chóng)原理簡(jiǎn)介

如果沒(méi)有前端基礎(chǔ),那么我們可能完全看不懂這些源代碼休偶。但是梁厉,我們通過(guò)瀏覽器看到的文字、圖片等信息踏兜,其實(shí)也包含在源代碼里词顾。

比如這個(gè)頁(yè)面的部分文字和圖片:

其中包含文字和圖片的代碼是這樣的

<div class="d_post_content j_d_post_content  clearfix" id="post_content_97130702595">         
又要迎來(lái)活生生的小鮮肉們,又要注入新生命辣=-= 開(kāi)學(xué)季需要更多交易!!房源碱妆、廣告计技、兼職還有各色各樣的寢室利器快快交易起來(lái)!!為了方便大家進(jìn)行各種交易,請(qǐng)吧內(nèi)所有【劃重點(diǎn)】交易在此進(jìn)行!!!單發(fā)將被刪帖山橄,請(qǐng)廣大吧友注意注意注意∩崦酰———————————————————————————————————本貼原則上只接受校友交易航棱,禁止【劃重點(diǎn)】微信代購(gòu)淘寶鏈接等商業(yè)性質(zhì)廣告。允許租房信息發(fā)布萌衬、二手物品交易饮醇、正規(guī)兼職招聘(注意防范詐騙)以及正規(guī)廣告發(fā)布。如果發(fā)現(xiàn)虛假信息和重復(fù)信息將會(huì)被刪除秕豫。注意:請(qǐng)吧友自己鑒別真?zhèn)纹蛹瑁蓜?wù)組不為此貼信息負(fù)責(zé)观蓄。———————————————————————————————————
![](http://upload-images.jianshu.io/upload_images/1762791-9eac76b4bfaed0f1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
</div>

也就是說(shuō)祠墅,只要我們爬到了網(wǎng)頁(yè)的源代碼侮穿,那么這個(gè)網(wǎng)頁(yè)展示出來(lái)的(甚至隱藏掉的)所有信息,我們只要從源碼中篩選就能夠獲取毁嗦。

所以一般爬蟲(chóng)的原理其實(shí)非常簡(jiǎn)單:

  1. 爬取源碼
  2. 篩選信息

如何獲取源代碼

我們?cè)L問(wèn)網(wǎng)頁(yè)一般都是通過(guò)瀏覽器亲茅,而瀏覽器其實(shí)也就是一個(gè)程序而已。相應(yīng)的狗准,爬蟲(chóng)其實(shí)也是一個(gè)程序克锣。

因此爬蟲(chóng)程序(腳本)其實(shí)就是把自己偽裝成一個(gè)瀏覽器,然后跟瀏覽器一樣向目標(biāo)網(wǎng)頁(yè)的服務(wù)器發(fā)送訪(fǎng)問(wèn)請(qǐng)求腔长,只要騙過(guò)了服務(wù)器袭祟,那么服務(wù)器就會(huì)把源碼返回給你,這樣你就獲得該網(wǎng)頁(yè)的源代碼了捞附。

PS. 上面指的網(wǎng)頁(yè)都是靜態(tài)網(wǎng)頁(yè)巾乳,不包括動(dòng)態(tài)內(nèi)容;源代碼也只是 HTML 代碼故俐,不包括 JS 代碼想鹰。爬取動(dòng)態(tài)內(nèi)容要更為復(fù)雜一些

API

如果你是一個(gè)互聯(lián)網(wǎng)從業(yè)者,那么應(yīng)該聽(tīng)過(guò) API 這個(gè)詞药版。

API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)辑舷,目的是提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件得以訪(fǎng)問(wèn)一組例程的能力,而又無(wú)需訪(fǎng)問(wèn)源碼槽片,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)何缓。——百度百科

簡(jiǎn)單來(lái)說(shuō)还栓,你可以把 API 當(dāng)做一個(gè)管道接口碌廓,當(dāng)你連接上這個(gè)管道接口后,你就能從中獲取一些數(shù)據(jù)信息(當(dāng)然剩盒,你能獲取哪些信息是它說(shuō)了算)谷婆。

很多企業(yè)都會(huì)對(duì)外開(kāi)放一些 API 接口,通過(guò)這些接口辽聊,我們能更為快速纪挎、高效、便捷地獲取天氣跟匆、航班异袄、股市等信息。(不只是這些公共信息玛臂,其實(shí)像 QQ烤蜕、微博封孙、facebook 等都會(huì)開(kāi)放一些 API 接口,這樣能讓公司的業(yè)務(wù)更好地滲透到市場(chǎng)中去讽营,也利于業(yè)務(wù)之間的合作)

顯然虎忌,我們也可以通過(guò)爬蟲(chóng)程序來(lái)連接這些 API 接口,以此來(lái)獲取數(shù)據(jù)信息斑匪。

開(kāi)始學(xué)習(xí)吧

我在學(xué)習(xí)爬蟲(chóng)的過(guò)程中主要參考的是 崔慶才的Python爬蟲(chóng)學(xué)習(xí)系列教程 呐籽,他主要分了4個(gè)學(xué)習(xí)階段。按照這個(gè)教程一步一步的實(shí)踐蚀瘸,很快你就能收獲一些成果了狡蝶。

系列目錄:
產(chǎn)品經(jīng)理學(xué)Python&爬蟲(chóng)(一):為什么我要學(xué)Python
產(chǎn)品經(jīng)理學(xué)Python&爬蟲(chóng)(三):競(jìng)品數(shù)據(jù)爬取實(shí)戰(zhàn)——在行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贮勃,隨后出現(xiàn)的幾起案子贪惹,更是在濱河造成了極大的恐慌,老刑警劉巖寂嘉,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奏瞬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泉孩,警方通過(guò)查閱死者的電腦和手機(jī)硼端,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寓搬,“玉大人珍昨,你說(shuō)我怎么就攤上這事【渑纾” “怎么了镣典?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)唾琼。 經(jīng)常有香客問(wèn)我兄春,道長(zhǎng),這世上最難降的妖魔是什么锡溯? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任赶舆,我火速辦了婚禮,結(jié)果婚禮上祭饭,老公的妹妹穿的比我還像新娘涌乳。我一直安慰自己,他們只是感情好甜癞,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宛乃,像睡著了一般悠咱。 火紅的嫁衣襯著肌膚如雪蒸辆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天析既,我揣著相機(jī)與錄音躬贡,去河邊找鬼。 笑死眼坏,一個(gè)胖子當(dāng)著我的面吹牛拂玻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播宰译,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼檐蚜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沿侈?” 一聲冷哼從身側(cè)響起闯第,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缀拭,沒(méi)想到半個(gè)月后咳短,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛛淋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年咙好,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褐荷。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勾效,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诚卸,到底是詐尸還是另有隱情葵第,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布合溺,位于F島的核電站卒密,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棠赛。R本人自食惡果不足惜哮奇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望睛约。 院中可真熱鬧鼎俘,春花似錦、人聲如沸辩涝。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怔揩。三九已至捉邢,卻和暖如春脯丝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伏伐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工宠进, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人藐翎。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓材蹬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親吝镣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子堤器,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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