本篇目标
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详情页面地址,姓名,年龄等等的信息打印出来,直接贴代码如下
1 ''' 2 在学习过程中有什么不懂得可以加我的 3 python学习交流扣扣qun,934109170 4 群里有不错的学习教程、开发工具与电子书籍。 5 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。 6 ''' 7 __author__ = 'CQC' 8 # -*- coding:utf-8 -*- 9 10 import urllib11 import urllib212 import re13 14 class Spider:15 16 def __init__(self):17 self.siteURL = 'http://mm.taobao.com/json/request_top_list.htm'18 19 def getPage(self,pageIndex):20 url = self.siteURL + "?page=" + str(pageIndex)21 print url22 request = urllib2.Request(url)23 response = urllib2.urlopen(request)24 return response.read().decode('gbk')25 26 def getContents(self,pageIndex):27 page = self.getPage(pageIndex)28 pattern = re.compile('
运行结果如下
2.文件写入简介
在这里,我们有写入图片和写入文本两种方式
1)写入图片
1 2 #传入图片地址,文件名,保存单张图片3 def saveImg(self,imageURL,fileName):4 u = urllib.urlopen(imageURL)5 data = u.read()6 f = open(fileName, 'wb')7 f.write(data)8 f.close()
2)写入文本
1 def saveBrief(self,content,name):2 fileName = name + "/" + name + ".txt"3 f = open(fileName,"w+")4 print u"正在偷偷保存她的个人信息为",fileName5 f.write(content.encode('utf-8'))
3)创建新目录
1 2 #创建新目录 3 def mkdir(self,path): 4 path = path.strip() 5 # 判断路径是否存在 6 # 存在 True 7 # 不存在 False 8 isExists=os.path.exists(path) 9 # 判断结果10 if not isExists:11 # 如果不存在则创建目录12 # 创建目录操作函数13 os.makedirs(path)14 return True15 else:16 # 如果目录存在则不创建,并提示目录已存在17 return False
3.代码完善
主要的知识点已经在前面都涉及到了,如果大家前面的章节都已经看了,完成这个爬虫不在话下,具体的详情在此不再赘述,直接帖代码啦。
1 2 __author__ = 'CQC' 3 # -*- coding:utf-8 -*- 4 5 import urllib 6 import urllib2 7 import re 8 import tool 9 import os 10 11 #抓取MM 12 class Spider: 13 14 #页面初始化 15 def __init__(self): 16 self.siteURL = 'http://mm.taobao.com/json/request_top_list.htm' 17 self.tool = tool.Tool() 18 19 #获取索引页面的内容 20 def getPage(self,pageIndex): 21 url = self.siteURL + "?page=" + str(pageIndex) 22 request = urllib2.Request(url) 23 response = urllib2.urlopen(request) 24 return response.read().decode('gbk') 25 26 #获取索引界面所有MM的信息,list格式 27 def getContents(self,pageIndex): 28 page = self.getPage(pageIndex) 29 pattern = re.compile('(.*?)
1 2 __author__ = 'CQC' 3 #-*- coding:utf-8 -*- 4 import re 5 6 #处理页面标签类 7 class Tool: 8 #去除img标签,1-7位空格, 9 removeImg = re.compile('| {1,7}| ')10 #删除超链接标签11 removeAddr = re.compile(' |')12 #把换行的标签换为\n13 replaceLine = re.compile('| || ')14 #将表格制表替换为\t15 replaceTD= re.compile('')16 #将换行符或双换行符替换为\n17 replaceBR = re.compile(' | ')18 #将其余标签剔除19 removeExtraTag = re.compile('<.*?>')20 #将多行空行删除21 removeNoneLine = re.compile('\n+')22 def replace(self,x):23 x = re.sub(self.removeImg,"",x)24 x = re.sub(self.removeAddr,"",x)25 x = re.sub(self.replaceLine,"\n",x)26 x = re.sub(self.replaceTD,"\t",x)27 x = re.sub(self.replaceBR,"\n",x)28 x = re.sub(self.removeExtraTag,"",x)29 x = re.sub(self.removeNoneLine,"\n",x)30 #strip()将前后多余内容删除31 return x.strip()
以上两个文件就是所有的代码内容,运行一下试试看,那叫一个酸爽啊
看看文件夹里面有什么变化
不知不觉,海量的MM图片已经进入了你的电脑,还不快快去试试看!!