自学抓去淘女郎全部模特美女的图片 手稿

在百度传课上看到抓淘女郎模特照片,我看的免费视频没有看到抓去全部的图片,因此本身用刚学到的知识,把完整。
html

1,代码完成,抓到的最终效果以下:python





开始写代码:json

1,分析网页:函数

http://mm.taobao.com/json/request_top_list.htm?type=0&page= 这个page=1到page=4000均可以。因为找不到上一层网页,因此没办法判断具体的页数是多少。学习

个人解决办法是新建文件夹的时候,因为出现一样的模特名字的文件,因此抓取会自动报错和中止测试

2,主代码:网站

--------------------------------------------------------------------------url

i=1spa

mmurl='http://mm.taobao.com/json/request_top_list.htm?type=0&page='code

while i<5:

    url=mmurl+str(i) #获得网站地址

    cont=urlcont(url) #获得第一页内容    

    t=getHrefs(cont)  #找到第一页美女网站地址列表

    y=getImgSrcs(t) #找到图片地址,并存档到对应文件夹内

    i+=1

    print'理论上下载图片张数:%s' %y

----------------------------------------------------------------------

这里我值设置了抓去前4页面的模特的代码,共40个模特,0页面和1页面是相同的。貌似是个无限循环啊。(后面能够把模特名字做比较,判断是否能够break,因为我没有抓到最后一页,4000X10X120张图片,个人硬盘估没了,全部没打算写break).下面的代码都是按顺序接着来的,不要在意我这个新手的奇怪命名哦。

------------------------------------------------------------------------

#-*- coding: gbk -*-  

import sys

import urllib2

import re

import os

from xinbuxing import Creatnewtxt


def urlcont(url):

    up=urllib2.urlopen(url)

    cont=up.read()

    print cont

    return cont  #得到内容

----------------------------------------------------------------------

函数urlcont(),定义了打开,并阅读网页源代码。

有一点必须说明,cont有时候会变成淘宝的登入页面,不知道是反爬仍是规定须要上线时间怎么的。遇到这种状况通常隔着6分钟在运行就能够了。

---------------------------------------------------------------------------

def getHrefs(cont):

    re1=r'a href="(http:.*\.htm)" target'

    c=re.compile(re1)

    urlLists=re.findall(c,cont)

    print '美女主页列表:%s' %urlLists

    print '美女主页张数:%s' %len(urlLists)

    print'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'

    return urlLists #美女全部网站地列表

-----------------------------------------------------------------------------------

定义getHrefs(),来得到美女们的网网址

------------------------------------------------------------------------------------

def getName(cont):

    

    name=[]

    head=cont.find('<title>')

    tail=cont.find('</title>',head+1)

    c=cont[head+7:tail]

    s=c.replace(' ', '')

    #print s

    return s

-------------------------------------------------------------------------

若是你仔细看模特网页的源代码,会发现<title>淘女郎 - 尹明月 </title>,我这个正则就是要“淘女郎 - 尹明月。这个函数就是得到模特的名字。下面是最重要的部分了

--------------------------------------------------------------------------------

def getImgSrcs(htmlist):

    import urllib

    y=0

    for age in htmlist:

        print '这个美女的地址是:%s' %age

        print '----------------------美女主页--------------------:%s' %age

        cont=urlcont(age)

        #print'------------------------------------------------'

        #print cont

        g=getName(cont)

        

               

        

        #regcall=r'^1\d{10}\b'

        #MMcall=re.compile(regcall)

        #mmnum=re.findall(MMcall,cont)

        

        reg=r'src="(\S.*?\.jpg)"'

        imageurl=re.compile(reg)

        idic={}

        idic[age]=re.findall(imageurl,cont)

        #print idic[age]     #得到美女图片列表

        print '======================'

        #print 's=%s' %s

        #ss=s.decode('gbk')

        #sss=s.replace(' ',' ')

        #print ss

        print g

        

        os.mkdir('D:\\MM-PIC\\%s' %g)

        os.chdir('D:\\MM-PIC\\%s' %g)

        homedir=os.getcwd()

        print homedir

        x=0

        for j in idic[age]:

            print j

            urllib.urlretrieve(j,'D:\\MM-PIC\\%s\\%s.jpg' %(g,x))

            x+=1

        

        print homedir

        

            

        mm_name=str(g)+'.txt'

        print g

        Creatnewtxt(mm_name,age,'D:\\MM-PIC\\%s' %g)   

       

        print '这张页面图片张数:%s,' %x

        y+=x

            

    return y

---------------------------------------------------------------------------

刚学这个遇到不少问题,遇到不少前辈 指点,完成了个人第一个爬虫。再次感谢!

程序还有不少在功能上,结构上,命名的地方须要改进,好比抓美女的三维数据,联系方式,QQ(QQ这个我试了一下,没办到,网页QQ有的在图片上,还有一抓一大片数字,找不到具体的QQ等)

大概花了3天才解决问题,基本完成的,完成以后的欣喜,那种感受,真爽!

下面去继续学习爬虫,在麦子网上系统的学习python,若是写了好东西,再跟你们分享。


错误笔记:

第一个就是/xo1/xo0/之类的数据,ASCII报错,耗掉我大量的 时间,解决办法是,在使用参数前,print一下就行了。

第二个调用其余py里面的 函数,没在开头加 #-*- coding: UTF-8 -*-   会显示”SyntaxError: Non-ASCII character '\xb5' in file C:\Python27\myfile.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details“

第三个:淘宝网会禁止访问,跳到淘宝登入页面,我还一直觉得是我程序有问题,把内容打印出来才发现。

第四个:decode()在os模块下很差用。

第五个:经常会被缩进,和中文’)搞的蛋碎,不过IDLE报错位置仍是很准的,不是前面一个字符就是后面一个字符错了。


哦,忘了这个xingbuxing.py(勿喷)的代码:

#-*- coding: UTF-8 -*-  


import os

def Creatnewtxt(txtname,text_cont,Dir):

    t=os.getcwd()

    print'old=%s' %t

    os.chdir(Dir)

    t=os.getcwd()

    print'now=%s' %t

    f=file(txtname,'w')

    f.write(text_cont) 

    f.close()


    f=file(txtname)

    cont=f.readline()

    print cont

    f.close()


if __name__ == '__main__':

    d='d:\\'

    Creatnewtxt('fuhan.txt','you are the best','d:\\')


还有正则测试器RegexTester.exe比较好用。!

若是有美女想要了解我,能够夹我口口:四六二九二九880,ye_mao


还有,原本想用cmd的ping命令来ping出那个page自大页的,可是先生访问不到主机,才发现,后面都变成相同的了。

不明白为何。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息