python爬蟲(簡單版)

學過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動態加載之類的,遇到這些東西,要爬的話,須要作更多更多的工做,固然,這麼好玩的東西,作再多工做都是值得的。網站

相關文章
相關標籤/搜索