簡單爬蟲-爬貼吧圖片

#coding=utf-8

#urllib模塊提供了讀取Web頁面數據的接口
import urllib
#re模塊主要包含了正則表達式
import re
#定義一個getHtml()函數
def getHtml(url):
    page = urllib.urlopen(url)  #urllib.urlopen()方法用於打開一個URL地址
    html = page.read() #read()方法用於讀取URL上的數據
    return html

def getImg(html):
    reg = r'src="(.+?\.jpg)" pic_ext'    #正則表達式,獲得圖片地址
    imgre = re.compile(reg)     #re.compile() 能夠把正則表達式編譯成一個正則表達式對象.
    imglist = re.findall(imgre,html)      #re.findall() 方法讀取html 中包含 imgre(正則表達式)的    數據
    #把篩選的圖片地址經過for循環遍歷並保存到本地
    #核心是urllib.urlretrieve()方法,直接將遠程數據下載到本地,圖片經過x依次遞增命名
    x = 0

    for imgurl in imglist:
    urllib.urlretrieve(imgurl,'D:\E\%s.jpg' % x)
            x+=1


html = getHtml("http://tieba.baidu.com/p/xxxx")
print getImg(html)

 

百度圖片爬蟲html

#!/usr/bin/env python 
#-*- coding:utf-8 -*-
import re
import requests

def dowmloadPic(html,keyword):


    pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
    i = 0
    print '找到關鍵詞:'+keyword+'的圖片,如今開始下載圖片...'
    for each in pic_url:
        print '正在下載第'+str(i+1)+'張圖片,圖片地址:'+str(each)
        try:
            pic= requests.get(each, timeout=10)
        except requests.exceptions.ConnectionError:
            print '【錯誤】當前圖片沒法下載'
            continue
        string = '/home/adonis/picture'+keyword+'_'+str(i) + '.jpg'
        #resolve the problem of encode, make sure that chinese name could be store
        fp = open(string.decode('utf-8').encode('cp936'),'wb')
        fp.write(pic.content)
        fp.close()
        i += 1



if __name__ == '__main__':
    word = raw_input("Input key word: ")
    url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word='+word+'&ct=201326592&v=flip'
    result = requests.get(url)
    dowmloadPic(result.text,word)
相關文章
相關標籤/搜索