本篇目标
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 urllib 11 import urllib2 12 import re 13 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 url 22 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('<div class="list-item".*?pic-word.*?<a href="(.*?)".*?<img src="(.*?)".*?<a class="lady-name.*?>(.*?)</a>.*?<strong>(.*?)</strong>.*?<span>(.*?)</span>',re.S) 29 items = re.findall(pattern,page) 30 for item in items: 31 print item[0],item[1],item[2],item[3],item[4] 32 33 spider = Spider() 34 spider.getContents(1)
运行结果如下
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"正在偷偷保存她的个人信息为",fileName 5 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 True 15 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('<div class="list-item".*?pic-word.*?<a href="(.*?)".*?<img src="(.*?)".*?<a class="lady-name.*?>(.*?)</a>.*?<strong>(.*?)</strong>.*?<span>(.*?)</span>',re.S) 30 items = re.fin