zoukankan      html  css  js  c++  java
  • 一个简单的Python爬虫

    写了一个抓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
  • 相关阅读:
    偶对学习C#以及理解.Net平台的一些看法(二,Junior Bibliography)
    聊聊编程那些破事0.Prehistory
    偶对学习C#以及理解.Net平台的一些看法(一,Prerequisites)
    [转帖]c#.net常用函数列表
    一个编程小题目引发的思考(上)
    geoTools学习笔记001(简介)
    ArcGIS Server 10安装配置(JAVA)
    ARCGIS中label(标注)和Annotation(注记
    JSTL入门开发包详解
    基于C/S的网盘设计(JAVA) 网盘源码实现部分功能
  • 原文地址:https://www.cnblogs.com/codex/p/4051811.html
Copyright © 2011-2022 走看看