爬取淘寶MM圖片

獲取淘寶MM的所有用戶主頁的圖片。以下是代碼(包含註釋),運行環境是win、python2.7.10:

#coding:GBK
import requests
import json,re
from lxml import etree
import urllib
import os


def get_totalpage():
    '''獲取所有頁面總數'''
    url = "http://mm.taobao.com/tstar/search/tstar_model.do?_input_charset=utf-8&q=&viewFlag=A&sortType=default&searchStyle=&searchRegion=city%3A&searchFansNum=&currentPage=1&pageSize=100"
    html = requests.post(url).content.decode('gbk')
    html = json.loads(html)['data']
    totalPage = html['totalPage']
    return totalPage

def get_info(page):
    '''獲取前page頁MM的數據:包括姓名、uid、主頁url(其他所在城市、身高、體重、粉絲等這裏就不提取了)'''
    totalPage=get_totalpage()

    if page>totalPage or type(page)!=int or type(totalPage)!=int:
        print u'請輸入1~'+str(totalPage)+u'的整數'

    else:
        print u'檢測到總共有'+str(totalPage)+u'頁'
        print u'---------------------------'

        realName = []
        userId = []
        userurl = []
        for p in range(1,page+1):
            url = 'http://mm.taobao.com/tstar/search/tstar_model.do?_input_charset=utf-8&q=&viewFlag=A&sortType=default&searchStyle=&searchRegion=city%3A&searchFansNum=&currentPage='+str(p)+'&pageSize=100'
            html = requests.post(url).content.decode('gbk')
            html = json.loads(html)['data']['searchDOList']

            for data in html:
                Name = data['realName'] #真實姓名
                Id = data['userId'] #用戶ID
                url = 'https://mm.taobao.com/self/aiShow.htm?userId='+str(Id) #個人主頁

                realName.append(Name)
                userId.append(Id)
                userurl.append(url)
            print str(p)+'/'+str(totalPage),u'獲取成功......'
        return userId,realName,userurl

def get_img(url):
    '''返回包含淘寶MM主頁的所有圖片url的一個列表'''
    html = requests.get(url).content.decode('GBK')
    html = etree.HTML(html)
    src = html.xpath('//div[@class="mm-aixiu-content"]//img/@src')
    img = []
    for i in src:
        jpg = 'https:'+i
        if re.findall('(.*?).jpg',jpg)!=[]:
            img.append(jpg)
    img = list(set(img)) #去除重複url地址
    return img

#----------------------------------------------------------------------------------

print u'''
* * * * * * * * * * *
* 名稱:獲取淘寶MM圖片
* 作者:song
* 版本:1.0
* * * * * * * * * * *
'''

totalpage = get_totalpage() #獲取總頁數(我寫這個爬蟲時有399頁,每頁有100個用戶,差不多有39900個用戶)
uid,uname,url = get_info(totalpage) #獲取所有頁面的個人信息(主要是獲取個人主頁url、用戶名)

#遍歷列表url,獲取所有用戶圖片
for i in range(len(url)):
    img = get_img(url[i])

    #判斷文件夾是否存在,如果不存在則新建一個文件夾
    path = 'D:/taobao/'+uname[i]+'/'
    if os.path.exists(path)!=True:
        os.makedirs(path)
    
    #下載圖片到剛剛創建的目錄(我這裏指定到D:/taobao/下,每一個人單獨一個文件夾)
    for j in range(len(img)):
        urllib.urlretrieve(img[j],path+str(j+1)+'.jpg')
        print uname[i],str(j+1)+'/'+str(len(img)),img[j]



以下是部分下載的圖片:

這裏寫圖片描述
這裏寫圖片描述

歡迎訪問我的個人站點:http://bgods.cn/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章