Python3 爬蟲入門(一)

發(fā)現(xiàn)了很多很不錯(cuò)的關(guān)于Python、關(guān)于爬蟲的博客和書籍光涂。列舉如下,之后如果發(fā)現(xiàn)更好的拧烦,我也會(huì)補(bǔ)充上去忘闻。另外,因?yàn)榕老x用到的很多知識(shí)我之前都有過涉獵恋博,所以有的地方我懂的話筆記里就會(huì)一筆帶過齐佳,資料整理如下:

  • Full Speed Python, 這本書很適合給有編程基礎(chǔ)的人入門债沮,它包含了Python基本的語法和對應(yīng)的習(xí)題炼吴,快速刷一遍能很快對Python有個(gè)了解。
  • Python 3 教程疫衩,菜鳥教程也很錯(cuò)硅蹦,目錄分的很細(xì)歼狼,很淺顯也有對應(yīng)的例子袁波。

讀完這兩篇文檔后,我仍然推薦找一本專門講Python的書绣版,在繼續(xù)學(xué)習(xí)其他內(nèi)容時(shí)抽空將其慢慢讀一遍鲤拿,因?yàn)閷τ赑ython語言假褪,上述兩項(xiàng)只能說講了一些皮毛,而很多Python的特性以及編程技巧需要通過大量的系統(tǒng)化閱讀和練習(xí)才能做到信手拈來近顷,再者才能有所創(chuàng)新生音。

  • Python3網(wǎng)絡(luò)爬蟲系列, 這個(gè)是我個(gè)人很推薦也是我即將照著學(xué)習(xí)的Python 爬蟲入門教程幕庐,本文剩下的內(nèi)容就是這系列的學(xué)習(xí)筆記久锥。
  • 爬蟲代理服務(wù)家淤, 爬蟲進(jìn)階异剥。
  • Python程序員, Python進(jìn)階,該作者還有列出了一個(gè)爬蟲進(jìn)階需要的資料絮重,可以關(guān)注他的公眾號(hào)獲得冤寿。

當(dāng)然還有萬法之宗——Python3.6.5官方文檔歹苦,以及其他零零碎碎搜索得到的資料就不贅述了。祝大家好運(yùn)督怜。

爬蟲和Urllib庫

安裝pip(pip 是 Python 包管理工具殴瘦,該工具提供了對Python 包的查找、下載号杠、安裝蚪腋、卸載的功能)

網(wǎng)絡(luò)爬蟲的定義

網(wǎng)絡(luò)爬蟲,也叫網(wǎng)絡(luò)蜘蛛(Web Spider)姨蟋,如果把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng)屉凯,Spider就是一只在網(wǎng)上爬來爬去的蜘蛛。網(wǎng)絡(luò)爬蟲就是根據(jù)網(wǎng)頁的地址來尋找網(wǎng)頁的眼溶,也就是URL悠砚。舉一個(gè)簡單的例子,我們在瀏覽器的地址欄中輸入的字符串就是URL堂飞,例如:https://www.baidu.com
URL就是同意資源定位符(Uniform Resource Locator)灌旧,它的一般格式如下(帶方括號(hào)[]的為可選項(xiàng)):
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
URL的格式由三部分組成:

  1. protocol:第一部分就是協(xié)議,例如百度使用的就是https協(xié)議绰筛;
  2. hostname[:port]:第二部分就是主機(jī)名(還有端口號(hào)為可選參數(shù))枢泰,一般網(wǎng)站默認(rèn)的端口號(hào)為80,例如百度的主機(jī)名就是www.baidu.com别智,這個(gè)就是服務(wù)器的地址;
  3. path:第三部分就是主機(jī)資源的具體地址宗苍,如目錄和文件名等。
    網(wǎng)絡(luò)爬蟲就是根據(jù)這個(gè)URL來獲取網(wǎng)頁信息的薄榛。

在Python3.x中讳窟,我們可以使用urlib這個(gè)組件抓取網(wǎng)頁,urllib是一個(gè)URL處理包敞恋,這個(gè)包中集合了一些處理URL的模塊丽啡,如下:

  • 1.urllib.request模塊是用來打開和讀取URLs的;

  • 2.urllib.error模塊包含一些有urllib.request產(chǎn)生的錯(cuò)誤硬猫,可以使用try進(jìn)行捕捉處理补箍;

  • 3.urllib.parse模塊包含了一些解析URLs的方法;

  • 4.urllib.robotparser模塊用來解析robots.txt文本文件.它提供了一個(gè)單獨(dú)的RobotFileParser類啸蜜,通過該類提供的can_fetch()方法測試爬蟲是否可以下載一個(gè)頁面坑雅。

我們使用urllib.request.urlopen()這個(gè)接口函數(shù)就可以很輕松的打開一個(gè)網(wǎng)站,讀取并打印信息衬横。


先來個(gè)簡單的

from urllib import request
import chardet #第三方庫chardet裹粤,它是用來判斷編碼的模塊

# 構(gòu)建Request
req = request.Request("https://www.guancha.cn/")

# 訪問頁面,并獲取從服務(wù)器的回應(yīng)蜂林,如果是HTTPS遥诉?
response = request.urlopen(req)
print (response.geturl() + '\n')
print (response.info())
print (response.getcode())

# 讀取頁面
html = response.read()

# 檢測頁面使用的編碼
charset = chardet.detect(html)

# 解碼:獲得易于閱讀的網(wǎng)頁源碼
html = html.decode(charset['encoding'])

結(jié)果:

C:\ProgramData\Anaconda3\python.exe "E:/大數(shù)據(jù)/hello world/urllib_test01.py"
https://www.guancha.cn/

Server: NWSs
Date: Sat, 23 Feb 2019 09:20:55 GMT
Content-Type: text/html
Content-Length: 239077
Connection: close
Cache-Control: max-age=60
Expires: Sat, 23 Feb 2019 09:21:54 GMT
Last-Modified: Sat, 23 Feb 2019 09:15:02 GMT
X-NWS-UUID-VERIFY: 94fe1429e739790b6f8a8475338d4874
X-NWS-LOG-UUID: b7c2b4e0-b930-4fa2-abcb-14d9b78a1337
X-Cache-Lookup: Hit From Disktank3
X-Daa-Tunnel: hop_count=2
X-Cache-Lookup: Hit From Inner Cluster
X-Cache-Lookup: Hit From Upstream


200

Process finished with exit code 0

這個(gè)程序中最后的html變量存儲(chǔ)了目標(biāo)網(wǎng)頁的源代碼打拇泣,經(jīng)過瀏覽器解析,它就會(huì)呈現(xiàn)出你在日常生活中常見的網(wǎng)頁矮锈。除此之外霉翔,關(guān)于網(wǎng)頁的META標(biāo)簽和HTTP協(xié)議的狀態(tài)碼,就不贅述了苞笨,有興趣的話可以讀一下HTTP協(xié)議的RFC文檔: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 - IETF Tools债朵,相信我,通讀之后會(huì)覺得神清氣爽瀑凝。這可算是爬蟲界的Hello World程序了葱弟。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市猜丹,隨后出現(xiàn)的幾起案子芝加,更是在濱河造成了極大的恐慌,老刑警劉巖射窒,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件藏杖,死亡現(xiàn)場離奇詭異,居然都是意外死亡脉顿,警方通過查閱死者的電腦和手機(jī)蝌麸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艾疟,“玉大人来吩,你說我怎么就攤上這事”卫常” “怎么了弟疆?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盗冷。 經(jīng)常有香客問我怠苔,道長,這世上最難降的妖魔是什么仪糖? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任柑司,我火速辦了婚禮,結(jié)果婚禮上锅劝,老公的妹妹穿的比我還像新娘攒驰。我一直安慰自己,他們只是感情好故爵,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布玻粪。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奶段。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天剥纷,我揣著相機(jī)與錄音痹籍,去河邊找鬼。 笑死晦鞋,一個(gè)胖子當(dāng)著我的面吹牛蹲缠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播悠垛,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼线定,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了确买?” 一聲冷哼從身側(cè)響起斤讥,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湾趾,沒想到半個(gè)月后芭商,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搀缠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年铛楣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艺普。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡簸州,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出歧譬,到底是詐尸還是另有隱情岸浑,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布瑰步,位于F島的核電站助琐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏面氓。R本人自食惡果不足惜兵钮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舌界。 院中可真熱鬧掘譬,春花似錦、人聲如沸呻拌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至靴拱,卻和暖如春垃喊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袜炕。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工本谜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偎窘。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓乌助,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陌知。 傳聞我的和親對象是個(gè)殘疾皇子他托,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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