本篇目标

1.抓取淘宝MM的姓名,头像,年龄

2.抓取每一个MM的资料简介以及写真图片

3.把每一个MM的写真图片按照文件夹保存到本地

4.熟悉文件保存的过程

1.URL的格式

在这里我们用到的URL是 http://mm.taobao.com/json/request_top_list.htm?page=1,问号前面是基地址,后面的参数page是代表第几页,可以随意更换地址。点击开之后,会发现有一些淘宝MM的简介,并附有超链接链接到个人详情页面。

我们需要抓取本页面的头像地址,MM姓名,MM年龄,MM居住地,以及MM的个人详情页面地址。

2.抓取简要信息

相信大家经过上几次的实战,对抓取和提取页面的地址已经非常熟悉了,这里没有什么难度了,我们首先抓取本页面的MM详情页面地址,姓名,年龄等等的信息打印出来,直接贴代码如下

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

__author__ = 'CQC'
# -*- coding:utf-8 -*-
import urllib
import urllib2
import re
class Spider:
    def __init__(self):
        self.siteURL = 'http://mm.taobao.com/json/request_top_list.htm'
    def getPage(self,pageIndex):
        url = self.siteURL + "?page=" + str(pageIndex)
        print url
        request = urllib2.Request(url)
        response = urllib2.urlopen(request)
        return response.read().decode('gbk')
    def getContents(self,pageIndex):
        page = self.getPage(pageIndex)
        pattern = re.compile('<div class="list-item".*?pic-word.*?<a href="(.*?)".*?<img src="(.*?)".*?<a class="lady-name.*?>(.*?)</a>.*?<strong>(.*?)</strong>.*?<span>(.*?)</span>',re.S)
        items = re.findall(pattern,page)
        for item in items:
            print item[0],item[1],item[2],item[3],item[4]
spider = Spider()
spider.getContents(1)

运行结果如下

2.文件写入简介

在这里,我们有写入图片和写入文本两种方式

1)写入图片

Python
1
2
3
4
5
6
7

运行结果如下
QQ截图20150220234132
2.文件写入简介
在这里,我们有写入图片和写入文本两种方式
1)写入图片

2)写入文本

Python
1
2
3
4
5

def saveBrief(self,content,name):
    fileName = name + "/" + name + ".txt"
    f = open(fileName,"w+")
    print u"正在偷偷保存她的个人信息为",fileName
    f.write(content.encode('utf-8'))

3)创建新目录

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#创建新目录
defmkdir(self,path):
    path=path.strip()
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists=os.path.exists(path)
    # 判断结果
    ifnotisExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)
        returnTrue
    else:
        # 如果目录存在则不创建,并提示目录已存在
        returnFalse

3.代码完善

主要的知识点已经在前面都涉及到了,如果大家前面的章节都已经看了,完成这个爬虫不在话下,具体的详情在此不再赘述,直接帖代码啦。

Python
1
spider.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144

__author__='CQC'
# -*- coding:utf-8 -*-
importurllib
importurllib2
importre
importtool
importos
#抓取MM
classSpider:
    #页面初始化
    def__init__(self):
        self.siteURL='http://mm.taobao.com/json/request_top_list.htm'
        self.tool=tool.Tool()
    #获取索引页面的内容
    defgetPage(self,pageIndex):
        url=self.siteURL+"?page="+str(pageIndex)
        request=urllib2.Request(url)
        response=urllib2.urlopen(request)
        returnresponse.read().decode('gbk')
    #获取索引界面所有MM的信息,list格式
    defgetContents(self,pageIndex):
        page=self.getPage(pageIndex)
        pattern=re.compile('<div class="list-item".*?pic-word.*?<a href="(.*?)".*?<img src="(.*?)".*?<a class="lady-name.*?>(.*?)</a>.*?<strong>(.*?)</strong>.*?<span>(.*?)</span>',re.S)
        items=re.findall(pattern,page)
        contents=[]
        foriteminitems:
            contents.append([item[0],item[1],item[2],item[3],item[4]])
        returncontents
    #获取MM个人详情页面
    defgetDetailPage(self,infoURL):
        response=urllib2.urlopen(infoURL)
        returnresponse.read().decode('gbk')
    #获取个人文字简介
    defgetBrief(self,page):
        pattern=re.compile('<div class="mm-aixiu-content".*?>(.*?)<!--',re.S)
        result=re.search(pattern,page)
        returnself.tool.replace(result.group(1))
    #获取页面所有图片
    defgetAllImg(self,page):
        pattern=re.compile('<div class="mm-aixiu-content".*?>(.*?)<!--',re.S)
        #个人信息页面所有代码
        content=re.search(pattern,page)
        #从代码中提取图片
        patternImg=re.compile('<img.*?src="(.*?)"',re.S)
        images=re.findall(patternImg,content.group(1))
        returnimages
    #保存多张写真图片
    defsaveImgs(self,images,name):
        number=1
        printu"发现",name,u"共有",len(images),u"张照片"
        forimageURLinimages:
            splitPath=imageURL.split('.')
            fTail=splitPath.pop()
            iflen(fTail)>3:
                fTail="jpg"
            fileName=name+"/"+str(number)+"."+fTail
            self.saveImg(imageURL,fileName)
            number+=1
    # 保存头像
    defsaveIcon(self,iconURL,name):
        splitPath=iconURL.split('.')
        fTail=splitPath.pop()
        fileName=name+"/icon."+fTail
        self.saveImg(iconURL,fileName)
    #保存个人简介
    defsaveBrief(self,content,name):
        fileName=name+"/"+name+".txt"
        f=open(fileName,"w+")
        printu"正在偷偷保存她的个人信息为",fileName
        f.write(content.encode('utf-8'))
    #传入图片地址,文件名,保存单张图片
    defsaveImg(self,imageURL,fileName):
        u=urllib.urlopen(imageURL)
        data=u.read()
        f=open(fileName,'wb')
        f.write(data)
        printu"正在悄悄保存她的一张图片为",fileName
        f.close()
    #创建新目录
    defmkdir(self,path):
        path=path.strip()
        # 判断路径是否存在
        # 存在     True
        # 不存在   False
        isExists=os.path.exists(path)
        # 判断结果
        ifnotisExists:
            # 如果不存在则创建目录
            printu"偷偷新建了名字叫做",path,u'的文件夹'
            # 创建目录操作函数
            os.makedirs(path)
            returnTrue
        else:
            # 如果目录存在则不创建,并提示目录已存在
            printu"名为",path,'的文件夹已经创建成功'
            returnFalse
    #将一页淘宝MM的信息保存起来
    defsavePageInfo(self,pageIndex):
        #获取第一页淘宝MM列表
        contents=self.getContents(pageIndex)
        foritemincontents:
            #item[0]个人详情URL,item[1]头像URL,item[2]姓名,item[3]年龄,item[4]居住地
            printu"发现一位模特,名字叫",item[2],u"芳龄",item[3],u",她在",item[4]
            printu"正在偷偷地保存",item[2],"的信息"
            printu"又意外地发现她的个人地址是",item[0]
            #个人详情页面的URL
            detailURL=item[0]
            #得到个人详情页面代码
            detailPage=self.getDetailPage(detailURL)
            #获取个人简介
            brief=self.getBrief(detailPage)
            #获取所有图片列表
            images=self.getAllImg(detailPage)
            self.mkdir(item[2])
            #保存个人简介
            self.saveBrief(brief,item[2])
            #保存头像
            self.saveIcon(item[1],item[2])
            #保存图片
            self.saveImgs(images,item[2])
    #传入起止页码,获取MM图片
    defsavePagesInfo(self,start,end):
        foriinrange(start,end+1):
            printu"正在偷偷寻找第",i,u"个地方,看看MM们在不在"
            self.savePageInfo(i)
#传入起止页码即可,在此传入了2,10,表示抓取第2到10页的MM
spider=Spider()
spider.savePagesInfo(2,10)

Python
1
tool.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

__author__='CQC'
#-*- coding:utf-8 -*-
importre
#处理页面标签类
classTool:
    #去除img标签,1-7位空格,
    removeImg=re.compile('<img.*?>| {1,7}| ')
    #删除超链接标签
    removeAddr=re.compile('<a.*?>|</a>')
    #把换行的标签换为\n
    replaceLine=re.compile('<tr>|<div>|</div>|</p>')
    #将表格制表<td>替换为\t
    replaceTD=re.compile('<td>')
    #将换行符或双换行符替换为\n
    replaceBR=re.compile('<br><br>|<br>')
    #将其余标签剔除
    removeExtraTag=re.compile('<.*?>')
    #将多行空行删除
    removeNoneLine=re.compile('\n+')
    defreplace(self,x):
        x=re.sub(self.removeImg,"",x)
        x=re.sub(self.removeAddr,"",x)
        x=re.sub(self.replaceLine,"\n",x)
        x=re.sub(self.replaceTD,"\t",x)
        x=re.sub(self.replaceBR,"\n",x)
        x=re.sub(self.removeExtraTag,"",x)
        x=re.sub(self.removeNoneLine,"\n",x)
        #strip()将前后多余内容删除
        returnx.strip()

以上两个文件就是所有的代码内容,运行一下试试看,那叫一个酸爽

看看文件夹里面有什么变化

Python爬虫实战:抓取淘宝MM照片相关推荐

  1. Python爬虫实战(4):抓取淘宝MM照片

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  2. python爬虫淘宝实例-Python——爬虫实战 爬取淘宝店铺内所有宝贝图片

    之前用四篇很啰嗦的入门级别的文章,带着大家一起去了解并学习在编写爬虫的过程中,最基本的几个库的用法. 那么今天,我们就正式开始我们的第一篇实战内容,爬取一整个淘宝店铺里的所有宝贝的详情页,并且把详情页 ...

  3. python爬虫淘宝视频_Python2爬虫:以抓取淘宝MM为例(实战)

    本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...

  4. Python如何快速爬取淘宝MM呢?教你一招

    本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...

  5. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  6. Python爬虫,抓取淘宝商品评论内容

    2019独角兽企业重金招聘Python工程师标准>>> 作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用pytho ...

  7. 【爬虫】python使用selenium抓取淘宝中的商品数据

    前言 最近因为项目需要又得抓一批数据,和之前的scrapy不同,这次选择使用selenium来爬取.两种方法的区别如下: scrapy之类的库是基于网络请求来爬取的,也就是直接向目标服务器发送http ...

  8. Python爬虫实战(六) 天猫(淘宝)评论爬取与分析实战

    目录 一.天猫(淘宝)爬取地址对比 二.防爬技巧 三.数据分析 代码更新12.19,均可爬取(若爬取失效,请先检查cookie的有效性) 一.天猫(淘宝)爬取地址对比 天猫评论抓包json数据如下,在 ...

  9. python爬虫招聘-Python爬虫实战-抓取boss直聘招聘信息

    实战内容:爬取boss直聘的岗位信息,存储在数据库,最后通过可视化展示出来 PS注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑容易放弃.为此小编建了个Python全栈免费答疑.裙 : ...

最新文章

  1. 简化软件集成:一个Apache Camel教程
  2. wxWidgets:用于测试 TAB 导航的示例
  3. 全志A33-ARM开发板通过NFS与Ubuntu共享文件
  4. C语言试题六十三之请编写函数fun:将s所指字符串中ascii值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
  5. C语言及程序设计进阶例程-12 结构体成员的引用
  6. 显著性检测(saliency detection)评价指标之KL散度距离Matlab代码实现
  7. 24解析函数的级数表示(三)
  8. setTimeout 方法用于在指定的毫秒数后调用函数或计算表达式
  9. 计算机网络基础应用课程标准,王建波《计算机网络基础》课程标准.doc
  10. 社区计算机基础知识,社区计算机基础知识试题及答案.doc
  11. Ps UI设计如何简单快捷切图
  12. 通俗理解路由器和交换机的区别?
  13. Map集合通过value获取key的几种方式
  14. SU-03T语音模块的使用(小智语音控制LED灯)
  15. VS2019使用EasyX实现简单图形界面功能
  16. 传奇列表上传登录器公告小窗口怎么修改
  17. secure CRT设置自动保存日志
  18. 系统体系结构-概念和框架
  19. python 爬陌生人qq空间_Python爬取qq空间说说
  20. 英语知识点整理day14-谚语学习(F字母开头)

热门文章

  1. SPA-Vue企业级开发模式介绍
  2. 灰色系统预测模型GM(1,1),GM(1,n)及Matlab实现
  3. 有关“夜壶冲”的由来
  4. 一位程序员搬家到新加坡的体验
  5. debian配置ip
  6. 网易云---手机验证码登录
  7. 咖说 | 「延展与重构」数字艺术的新可能
  8. 在外企上班是一种什么体验?附国内热门外企公司名单!
  9. python里的log怎么表示_python中的对数log函数表示及用法
  10. 关于机壳地和板子地(GND)的连接