简单的Python抓taobao图片爬虫

918次阅读  |  发布于5年以前

写了一个抓taobao图片的爬虫,全是用if,for,while写的,比较简陋,入门作品。

从网页http://mm.taobao.com/json/request_top_list.htm?type=0&page;=中提取taobao模特的照片。

复制代码 代码如下:

-- coding: cp936 --

import urllib2
import urllib
mmurl="http://mm.taobao.com/json/request_top_list.htm?type=0&page;="
i=0#第二页有个人的页面没图片,会出现IO错误
while i<15:
url=mmurl+str(i)

print url #打印出列表的url

    up=urllib2.urlopen(url)#打开页面,存入句柄中  
    cont=up.read()  
    #print len(cont)#页面的长度  
    ahref='<a href="http'#筛选页面内网页链接的关键字  
    target="target"  
    pa=cont.find(ahref)#找出网页链接的头部位置  
    pt=cont.find(target,pa)#找出网页链接的尾部位置  
    for a in range(0,20):#如才能不把20硬编码进去?如何找到文件结尾?  
            urlx=cont[pa+len(ahref)-4:pt-2]#从头部到尾部,将网页链接存入变量  
            if len(urlx) < 60:#如果网页链接长度适合【len()!!!!】  
                urla=urlx     #那么就准备将其打印出来  
                print urla    #这是想要的model个人URL  
                #########以下开始对model个人的URL进行操作#########  
                mup=urllib2.urlopen(urla)#打开model个人的页面,存入句柄中  
                mcont=mup.read()#对model页面的句柄进行读出操作,存入mcont字符串  
                imgh="<img style=" #筛选页面内【图片】链接的关键字  
                imgt=".jpg"  
                iph=mcont.find(imgh)#找出【图片】链接的头部位置  
                ipt=mcont.find(imgt,iph)#找出【图片】链接的尾部位置  
                for b in range(0,10):#又是硬编码・・・・  
                        mpic=mcont[iph:ipt+len(imgt)]#原始图片链接,链接字符的噪声太大  
                        iph1=mpic.find("http")#对上面的链接再过滤一次  
                        ipt1=mpic.find(imgt)  #同上  
                        picx=mpic[iph1:ipt1+len(imgt)]  
                        if len(picx)<150:#仍有一些URL是"http:ss.png><dfsdf>.jpg"(设为100竟然会误伤)  
                                pica=picx #【是len(picx)<100而不是picx!!】不然会不显示  
                                print pica  
                                ############################  
                                ###########开始下载pica这个图片  
                                urllib.urlretrieve(pica,"pic\\\tb"+str(i)+"x"+str(a)+"x"+str(b)+".jpg")                                     
                                ###########   pica图片下载完毕.(加上各循环体的数字,以免名字重复)  
                                ############################  
                        iph=mcont.find(imgh,iph+len(imgh))#开始下一个循环  
                        ipt=mcont.find(imgt,iph)  
                ############model个人URL内的【图片链接】提取完毕##########  
            pa=cont.find(ahref,pa+len(ahref))#将原来的头部位作为起始点,继续向后找下一个头部  
            pt=cont.find(target,pa)#继续找下一个尾部  
    i+=1  

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8