✍寫在前面:html
歡迎加入純乾貨技術交流羣Disaster Army:317784952python
接到5月25日以前要交稿的任務我就一門心思想寫一篇爬蟲入門的文章,但是我並不會。還好有將近一個月的時間去學習,因而我天天鑽在書和視頻教程裏。其實並不難的,我只是想作到可以很好的理解它並用本身的語言較好的表達出來,也許你將看到的是史上最不專業的技術交流文章,沒錯這就是我想要的。我力求能讓沒有編程基礎同我同樣愛黑客技術卻苦於看不到出路的同窗們在24小時以內明白爬蟲是怎麼一回事。我想這纔是我加入中國紅客聯盟太極實驗室在紅客精神的號召下作的有意義的事。學習技術必定要學會付出、開源、共享、互助,不少大牛彷佛不肯意這麼作了,咱們入門小菜鳥只要夠團結,樂於奉獻就必定能夠達到1+1>2的共贏效果。總之共同努力吧!編程
☝第一章python2.7
0x00 python****的認識、安裝函數
官面上的話自行去百度,這裏我只介紹我所掌握到的、最重要的信息。學習
特色:測試
(1)跨平臺開發編碼
(2)以語法簡潔清晰著稱url
(3)縮進控制嚴格插件
至於說爬蟲需不須要編程基礎,不用多說,君不見本屌在這個月以前的n多個月裏是多麼苦苦的啃教程,對麼下三賴的求指點。其實自學的進步速度太慢了,此文也但願看到的碼闊多多提點!
更多信息:
安裝也是極易的,只是有python2.7和python3須要糾結選一下。菜菜也很少作建議了,各有所長,python是任性的,不顧及老用戶感覺強行不兼容更代,足以見得其魄力和自信。2.7的用戶較多一點,初學者想用大神的exp不得已會選擇它,3的用戶逐日增長,人家既然更代天然有好的緣由。沒必要擔憂,到最後基本上差別在哪裏都會知道的。
仍是那句話,官面上能夠查到的就很少聊,交流文章多寫做者的見解,意見不統一的噴過來就是。不少教程會建議一開始的時候用python自帶的IDLE寫代碼,簡潔沒有代碼補全提示,適合初學者!我差點就信了!你會以爲怎麼打都有一種好TM業餘的感受有沒有?個人觀點是:不是武功練到什麼程度用什麼劍,而是有適合本身的絕世好劍就絕對不用絕世第二劍。因此用了一段時間的IDLE我就決定換一款炫酷的編譯器,因而我選擇了Atom(這個時候有一個認識上的錯誤。)而後一個字都沒寫就安裝activate-power-mode插件,開始震屏,冒泡,好不炫酷。
安裝好了python
,有了編譯器,咱們開始編程了,打開編譯器輸入
print (「Hello Word」)
,保存文件名爲1.py
,就把它保存在桌面上。而後cmd
cd /d C:\\Users\Administrator\Desktop python 1.py
若是打印:Hello word,那麼恭喜你,你學會編程了!(個人天!)若是打印失敗,那麼你和兄弟我起初時犯了同樣的錯誤:沒有設置環境變量。
這張圖應該能夠說明問題了,個人電腦>屬性>高級系統設置>環境變量>pach>最後面加;G:\python27(根據本身安裝路徑來改)。
這回就能夠打印了,好吧你也學會編程了!(我天哪!)
**0x001 **將網頁下載到本地
咱們要用到python的標準模塊urllib,具體下面的多種方法能夠dir打開查看的,代碼以下,供您消遣。大多數同窗都會以爲過小兒科的,不太懂得沒必要細究,只需知道用這麼個模塊,這麼個方法能夠幹這麼個事情!
# -*-coding:utf-8 -*- # 首先進行編碼申明 import urllib # 導入urllib模塊 url = "http://www.xxoo.com/" # 變量賦值 urllib.urlretrieve(url, "C:\\Users\\用戶名\\Desktop\\g00gle.txt") # urlretrieve方法下載到本地
這樣就將網頁下載到本地了
**0x002 **判斷網頁是否能夠抓取以及抓取進度
思路是這樣的:咱們針對一個網頁首先要看它是否能夠爬取,若是能夠咱們抓取他的什麼?抓取它的內容、頭部信息、狀態碼、傳入網址等,代碼以下:
# -*-coding:utf-8 -*- import urllib url = "http://www.163.com/" html = urllib.urlopen(url) # content = html.read().decode('gbk','ignore').encode(''utf-8) # print(content) code = html.getcode() # 網頁狀態碼,變量code是一個整形 if code == 200: print html.read() print html.info() else: print "不明飛行物." # if判斷語句判斷網頁返回是否正常,若是正常返回他的內容、頭部信息、狀態碼、傳入網址等
這裏,urllib中用的的方法:
# urlopen() #獲取類文件對象 # read() #讀取文件內容 # infor # 獲取頭部信息Header #Getcode #獲取網頁狀態碼 #geturl #傳入網址
舉一個例子: 這是某站的Header、Sever、Content-Type、Last-Modified
用上面代碼抓取打印的結果: 而後咱們用回調函數的方法寫一段有讀取進度的抓取網頁的代碼。
# -*-coding:utf-8 -*- import urllib def callback(a,b,c): # 回調函數 # @a:xxx # @b:xxx # @c:xxx down_program = 100.0 * a * b / c if down_program >100: down_program =100 print "%.1f%%"% down_program # 字符串拼接%.4f讓輸出小數點後1位 print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>100%" url = "http://tieba.baidu.com/" local = "C:\\Users\\Joe\\Desktop\\papa2.html" urllib.urlretrieve(url,local,callback) # 調用了上面封裝的callback函數
技術有限,原本想讓它
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>100%這樣讀取的,懶得弄了,沒再深究。
**0x003 **你發現換了編譯器
對的,至因而爲何呢?由於到後來我才明白編譯器、文本編譯器、IDE之間的區別,真是愚笨!我是這樣理解的,就像大保健同樣,IDE小姐能夠提供陪吃、推拿、跳舞、刮痧、n推背等服務,編譯器呢晚上進屋白天走人,文本編譯器……相似於什麼呢?充氣娃娃?它們不能對比各有所長。Atom嚴格上來講屬於文本編譯器,自己不能斷點測試,但加載插件後能夠。還有,Atom想Chrorme同樣任性,自動強制裝在系統盤,其實以前忍了它……如今找到個人絕世好劍了,不能忍,Pycharm取而代之。Sublimetext,人氣之高,天然也不錯。
**0x004 **本章小結
本章咱們安裝了Python環境,配置了環境變量,淺嘗了編程,抓取了網頁內容,並有進度條的下載到了本地。其實都是一些簡單的事情。簡單區分了一下編譯器、文本編譯器、IDE之間的區別。這個過程當中我確定有認識上和方法上不當的地方,歡迎你們批過來!預知後事如何,我們下回分解!
——————
> 未經溝通轉載,將追究法律責任,請尊重原創勞動成果!