學過python的帥哥都知道,爬蟲是python的很是好玩的東西,並且python自帶urllib、urllib二、requests等的庫,爲爬蟲的開發提供大大的方便。html
此次我要用urllib2,爬一堆風景圖片。node
先上重點代碼python
1 response = urllib2.urlopen(url).read() 2 soup = BeautifulSoup( 3 response, # html字符串 4 'html.parser', # html解析器 5 from_encoding='utf-8' # 字符編碼 6 )
其中,urlopen就顧名思義了,能夠簡單理解爲打開一個url,而後得到該URL相對應的東西在python裏的對象,而後經過read以後,就獲得了頁面的全部構成元素了ajax
1 if __name__=='__main__': 2 s = urllib2.urlopen('http://www.baidu.com/') 3 print(s.read(100))
read能夠傳參數,在這裏是讀取100個字符,結果以下:cookie
而後上面重點代碼裏的soup是一個BeautifulSoup對象,是一個第三方的用於html頁面內容解析的庫,當建立了一個BeautifulSoup對象以後,就能夠用這個對象對html的內容進行解析,好比:ide
1 attr = { 2 'class':'pic', 3 } 4 nodes = soup.find_all('a',attr)
find_all()函數是查找全部符合參數條件的元素,上面的代碼就是查找全部類名爲pic的a元素,除了find_all以外,還有一個find元素,是查找符合條件的第一個元素,知道這兩個函數以後,已經能夠爬東西了。函數
import urllib2 from bs4 import BeautifulSoup def spider_image(url,pre_filename): response = urllib2.urlopen(url).read() soup = BeautifulSoup( response, # html字符串 'html.parser', # html解析器 from_encoding='utf-8' # 字符編碼 ) attr = { 'class':'pic', # 'page':'2' } nodes = soup.find_all('a',attr) url_list = set() for node in nodes: try: url_list.add(node['href']) except: pass for url in url_list: img_html = urllib2.urlopen(url).read() soup = BeautifulSoup( img_html, # html字符串 'html.parser', # html解析器 from_encoding='utf-8' # 字符編碼 ) img_url = soup.find('img',id="imgView") img_name = img_url['alt'] try: img = urllib2.urlopen(img_url['src']).read() print(u'正在下載圖片:'+img_name) fout = open(pre_filename+img_name+'.jpg','wb') fout.write(img) fout.close() except Exception as e: print(e) pass def mkdir(path): # 引入模塊 import os # 去除首位空格 path=path.strip() # 去除尾部 \ 符號 path=path.rstrip("\\") # 判斷路徑是否存在 # 存在 True # 不存在 False isExists=os.path.exists(path) # 判斷結果 if not isExists: # 若是不存在則建立目錄 print path+' 建立成功' # 建立目錄操做函數 os.makedirs(path) return True else: # 若是目錄存在則不建立,並提示目錄已存在 print path+' 目錄已存在' return False if __name__=='__main__': url_list = [ 'http://www.tooopen.com/img/90_894.aspx' ] i = 1 for url in url_list: print(u'如今開始下載第'+str(i)+u'個網站的圖片') # 定義要建立的目錄 mkpath='F:\\spider'+str(i) # 調用函數 mkdir(mkpath) spider_image(url,'F://spider//spider_image'+str(i)+'//') i = i + 1
爬圖片的話,其實就是讀取到圖片以後,轉成二進制數據以後,寫入文件就好了,而後運行就能夠了,而後就看到一堆圖片在目錄裏oop
固然,這算是最基礎,什麼狀況都沒遇到,超順利,隨着你想爬更多東西,會發現有不少反爬蟲的東西,好比cookie,驗證碼,ajax動態加載之類的,遇到這些東西,要爬的話,須要作更多更多的工做,固然,這麼好玩的東西,作再多工做都是值得的。網站