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