Python爬虫实战:抓取MM信息

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

1.抓取淘宝MM的姓名,头像,年龄,居住地,以及个人详情页面地址。

2.抓取每一个MM的资料简介以及写真图片(自己代码没实现)

3.把每一个MM的写真图片按照文件夹保存到本地(自己代码没实现图片保存)

4.熟悉文件保存的过程

 

自己代码只实现里抓取MM姓名、年龄、居住地和个人地址,然后保存到每人名字对应文件夹下的TXT中。

 

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

自己代码:

 

import urllib
import urllib.request
import re
import os

class TB:

    def __init__(self,baseUrl):
        self.baseUrl = baseUrl
        self.path = "D:\\tb\\"
        self.urls = []
        self.names = []
        self.ages = []
        self.ads = []   #地址     
        
    def getPage(self,pageNum):
        try:
            url = self.baseUrl + "?page=" + str(pageNum)
            request = urllib.request.Request(url)
            response = urllib.request.urlopen(request)
            return response.read().decode('GBK')
        except urllib.error.URLError as e:
            if hasattr(e,"reason"):
                print("获取页码失败",e.reason)
                
    def getName(self,tbPage):
        pattern = re.compile('(.*?)',re.S)
        items = re.findall(pattern,tbPage)
        #print(items)
        #print("1===========")
        for item in items:
            #print(item)
            #print(item[1])
            self.names.append(item[1])
            self.urls.append("http:"+item[0])
            
        #print(self.names)
        #print("2===========")
        #print(self.urls)
    
    def getAges(self,tbPage):
        pattern = re.compile('.*?(.*?)',re.S);
        ageItems = re.findall(pattern,tbPage)
        #print(ageItems)
        for item in ageItems:
            #print(item)
            self.ages.append(item)
            
        #print(self.ages)
     
    def getAds(self,tbPage):
        pattern = re.compile('.*?.*?(.*?).*?

 简单实现了下效果,第一次写,还需要多熟练。 

 

效果图片:

Python爬虫实战:抓取MM信息_第1张图片
 Python爬虫实战:抓取MM信息_第2张图片
 Python爬虫实战:抓取MM信息_第3张图片Python爬虫实战:抓取MM信息_第4张图片
 

  

 

例子代码:

import urllib
import urllib.request
import http.cookiejar  
import re
import os
 

 #处理页面标签类
class Tool:
    #去除img标签,1-7位空格, 
    removeImg = re.compile('| {1,7}| ')
    #删除超链接标签
    removeAddr = re.compile('|')
    #把换行的标签换为\n
    replaceLine = re.compile('|
|
|

') #将表格制表替换为\t replaceTD= re.compile('') #将换行符或双换行符替换为\n replaceBR = re.compile('

|
') #将其余标签剔除 removeExtraTag = re.compile('<.*?>') #将多行空行删除 removeNoneLine = re.compile('\n+') def replace(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()将前后多余内容删除 return x.strip() #抓取MM class Spider: #页面初始化 def __init__(self): self.siteURL = 'http://mm.taobao.com/json/request_top_list.htm' self.tool = Tool() #获取索引页面的内容 def getPage(self,pageIndex): url = self.siteURL + "?page=" + str(pageIndex) request = urllib.request.Request(url) response = urllib.request.urlopen(request) return response.read().decode('gbk') #获取索引界面所有MM的信息,list格式 def getContents(self,pageIndex): page = self.getPage(pageIndex) pattern = re.compile('
(.*?)

你可能感兴趣的:(Python)