作者:Gutierrez地址:http://www.jianshu.com/p/04459ab36b56
我有個(gè)馬上要混IT圈的女朋友,可她連大學(xué)C語(yǔ)言都是睡過的。我就是個(gè)操心的命,擔(dān)憂她適應(yīng)不了與周遭程序猿怎么交流。
雖然我一有機(jī)會(huì)便灌輸編程的快樂,科技的魅力,但收效甚微。所以這次,我準(zhǔn)備耐心給妹紙寫個(gè)教程,教她爬蟲,感受編程的成就感,也掌握個(gè)得瑟利器。
好勒,我們開始之前,我得確保她此時(shí)情緒穩(wěn)定,因?yàn)檫@需要點(diǎn)耐心。真誠(chéng)的給大家意見,如果她眉頭緊鎖,趕快收起筆記本本帶她去吃好吃的,和諧最要緊。
首先,我們需要臺(tái)電腦,幸虧妹子有Mac,省了不少事。最適合爬蟲的程序語(yǔ)言當(dāng)屬Python,Mac已經(jīng)內(nèi)置了Python,但我們需要補(bǔ)充一個(gè)爬蟲需要的庫(kù)requests。
電腦是個(gè)笨蛋,只能聽懂計(jì)算機(jī)語(yǔ)言,所以我們需要把我們的想法用計(jì)算機(jī)語(yǔ)言告訴他,讓他乖乖的執(zhí)行。庫(kù)是大神們已經(jīng)寫好的程序,我們導(dǎo)入庫(kù),就可以利用他們的成果了。
下載文件
https://bootstrap.pypa.io/get-pip.py
保存在根目錄(打開Finder就是)下,找到終端,打開后輸入下面的代碼,你不需要懂這是什么意思,總之,做完之后我們就配置好了所需的環(huán)境。心中默默祈禱,愿一切順利。
python get-pip.pypip install requests
在進(jìn)行爬蟲之前,我們需要去需要爬蟲的地方去踩踩點(diǎn)。我和女友都喜歡好奇心日?qǐng)?bào),那就去爬些好奇心日?qǐng)?bào)的圖片下來。
在chrome中打開所需爬蟲的網(wǎng)址,在網(wǎng)頁(yè)空白處右鍵單擊,在彈出的菜單中選擇審查元素,在彈出的底欄中就可以看到網(wǎng)頁(yè)的源代碼了,圖片的地址就藏在這些亂如麻的代碼中。不過,好在我們可以點(diǎn)擊底欄左上角的放大鏡,然后在選擇網(wǎng)頁(yè)中的圖片就可以快速在代碼中定位圖片地址了。
多選擇幾張圖片,仔細(xì)觀察會(huì)發(fā)現(xiàn)規(guī)律,格式是一樣的。
img class="pic" src="https://www.gxlcms.com/Uploads//system/articles/articleshows/18675/relatedMediumPc2/18675.jpg?1449539003" alt="可口可樂弧線瓶誕生 100 年了,它是如何改變了我們所處的世界? | 好奇心商業(yè)史"
看到這里,我們需要總結(jié)下爬蟲。我們?yōu)g覽的網(wǎng)頁(yè)絕大部分是通過一種編碼(HTML)將文字圖片視頻等內(nèi)容編程一堆復(fù)雜的代碼,如我們上面所見,瀏覽器會(huì)將這些代碼解釋成我們看到的樣子,換言之,我們?cè)跒g覽器中看到的都能在網(wǎng)頁(yè)源碼中找到。爬蟲是一種通過分析網(wǎng)頁(yè)源碼獲取我們信息的程序,在這里,我們利用爬蟲找到網(wǎng)頁(yè)源碼中的圖片并將其下載到本地。
在編寫代碼之前,我們需要準(zhǔn)備個(gè)代碼編輯器,這里推薦微軟的良心大作VS code,獻(xiàn)上下載地址。
https://www.visualstudio.com
打開VScode,將其保存在我們之前所說的根目錄下,保存成picdownloader.py,然后我們開始敲代碼。
#-*-coding:utf8-*-import reimport requestshtml = requests.get('http://www.qdaily.com/categories/17').textpic_url = re.findall('"pic" src="(.*?)"',html,re.S)i = 0 for each in pic_url: url = 'http://www.qdaily.com' + each print('now downloading:' + url) pic = requests.get(url) fp = open('pic//' + str(i) + '.jpg','wb') fp.write(pic.content) fp.close()i += 1
下面我們一條一條說。
#-*-coding:utf8-*-的意思上字符編碼是utf-8。妹子只需要知道寫上這條總沒錯(cuò),不寫有可能出錯(cuò)
import re import requests的意思上導(dǎo)入re 和requests庫(kù),告訴電腦,我們下面要用這兩個(gè)庫(kù)中的程序了。
下面這條代碼的目的是獲取網(wǎng)頁(yè)的源代碼,保存在html中,當(dāng)然你可以換成別的網(wǎng)頁(yè)。
html = requests.get('http://www.qdaily.com/categories/17').text
下面這條代碼是最核心的代碼,實(shí)現(xiàn)的功能是從上面的到的源代碼中,查找所有的圖片地址,將其保存在pic_url中?!眕ic” src=”(.*?)”‘表示我們查找的圖片地址在代碼中前面是”pic” src=”,后面是”。html就是上面我們?nèi)〉玫脑创a。
pic_url = re.findall('"pic" src="(.*?)"',html,re.S)
最后,我們只需要按照得到的圖片地址下載圖片到指定文件夾。代碼稍顯復(fù)雜,但別擔(dān)心,下面的代碼已經(jīng)不重要了,因?yàn)榕老x最核心的任務(wù)我們已經(jīng)完成。你可以拷貝下面的代碼添加到你的代碼后面,不過我還是會(huì)講解代碼的含義,但這里不懂也沒關(guān)系。
for each in pic_url:中,for語(yǔ)句表示循環(huán)遍歷pic_url,因?yàn)閜ic_url中保存著所有的圖片地址,所以下面的代碼會(huì)執(zhí)行多次,每次會(huì)處理一張圖片。each在下面的代碼中就代表每次執(zhí)行的圖片地址。
url = ‘ http://www.qdaily.com ‘ + each我們得到的地址不完整,需要與好奇心日?qǐng)?bào)的主頁(yè)合并,python中將兩個(gè)字符串合并,只需要+起來即可。
print(‘now downloading:’ + url)的功能是向終端打印括號(hào)中的內(nèi)容,我們把它當(dāng)作進(jìn)度條,執(zhí)行時(shí)觀察終端窗口,也許你會(huì)恍然大悟。
pic = requests.get(url)的功能是從url圖片地址下載到pic中。
最后所做的就是將下載得到的pic圖片內(nèi)容寫到文件中,并將其保存在pic文件夾中。
fp = open('pic//' + str(i) + '.jpg','wb')fp.write(pic.content)fp.close()
完整的代碼點(diǎn)此下載
http://pan.baidu.com/s/1i3LPgTB
千萬不要忘記在根目錄新建個(gè)文件夾來保存圖片,我們這里的文件夾是pic,還記得終端么,打開它,寫下如下代碼,回車即可
python picdownloader.py
到這里,我們完成圖片爬蟲程序,是不是很簡(jiǎn)單。女王,我已盡力,如果你沒懂,看來還得我手把手教,約么?
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com