#!/user/bin/env python
# _*_ coding:utf-8 _*_
import requests,re,json
def getGirlInfo():
#post请求一定会有参数
data={
'q':'',
'viewFlag':'A',
'sortType': 'default',
'searchStyle':'',
'searchRegion':'city:',
'searchFansNum':'',
'currentPage': '1',
'pageSize': '100',
}
response=requests.post("https://mm.taobao.com/tstar/search/tstar_model.do?_input_charset=utf-8",data=data)
html=response.text;
return json.loads(html)["data"]
#获取每个人的详细信息
def getGrilInfoList():
Nvs=[]
info=getGirlInfo()["searchDOList"]#获取模特详细信息
#print("%s %s %s %s %s %s"%("城市","身高","真是姓名","点赞数","ID","体重"))
for NvInfo in info:
#print (NvInfo["city"],NvInfo["height"],NvInfo["realName"],NvInfo["totalFavorNum"],NvInfo["userId"],NvInfo["weight"],)
NvInfo_ = {}
NvInfo_["城市"]=NvInfo["city"];
NvInfo_["身高"] = NvInfo["height"]+"CM";
NvInfo_["真是姓名"] = NvInfo["realName"];
NvInfo_["点赞数"] = NvInfo["totalFavorNum"];
NvInfo_["用户ID"] = NvInfo["userId"];
NvInfo_["体重"] = NvInfo["weight"]+"KG";
Nvs.append(NvInfo_)
return Nvs;
#获取每个人的相册id
def getNvImgList(id):
#获取图片列表
ImgListUrl="https://mm.taobao.com/self/album/open_album_list.htm?_charset=utf-8&user_id%20={}".format(id);
print("每个人的相册ID"+ImgListUrl)
response=requests.post(ImgListUrl)
result=response.text;
reg='<a class="mm-first" href="(.*?)" target="_blank">'
NvImgList=re.findall(reg,result);#返回一个缩略图列表
NvImgList=list(set(NvImgList))#去重
#print("缩略图列表")
# print(NvImgList)
NvImgListId=[]
for NvSuolvtu in NvImgList:
#问号是正则表达式的敏感字符 要转译
reg="//mm.taobao.com/self/album_photo.htm\?user_id={}&album_id=(.*?)&album_flag=0".format(id);
a=re.findall(reg,NvSuolvtu)[0];
NvImgListId.append(a)
return NvImgListId
#获取每个相册中的图片
def getNvImgListInfo(NvId,ImgId):
response=requests.post(" http://mm.taobao.com/album/json/get_album_photo_list.htm?user_id={}&album_id={}".format(NvId,ImgId))
#print("相册--%s"%("http://mm.taobao.com/album/json/get_album_photo_list.htm?user_id={}&album_id={}".format(NvId,ImgId)))
reault=response.text;
a=json.loads(reault)#将json转换成字典
NvImgListInfo = []; # 存放图片URL
for i,imagUrl in enumerate(a["picList"]):
#print("{}--{}".format(i,imagUrl["picUrl"][0:-14]))
NvImgListInfo.append(imagUrl["picUrl"][:-14])
return NvImgListInfo
for GrilInfo in getGrilInfoList():
NvId=GrilInfo["用户ID"];
#print("{}的图片".format(GrilInfo["真是姓名"]).center(100))
for imgid in getNvImgList(GrilInfo["用户ID"]):
for i in getNvImgListInfo(NvId,imgid):#获取每张图片的Url
img_name=i[-45:].split("/")[-1]
img=requests.get("http:"+i).content;#.content 以二进制打开一个文件
with open(img_name.split('/')[-1],"wb")as fn:
fn.write(img)
转载自原文链接, 如需删除请联系管理员。
原文链接:爬取淘女郎网站图片,转载请注明来源!