Python3爬虫学习笔记2.2——爬图片-妹子图

原创 2016年08月28日 23:40:20

正是有失远迎,今天尝试爬取妹子图妹子图
我们首先确认一下自己要爬取网页图片的规律。打开首页会发现每页都有10个写真集。url为 www.meizitu.com
这里写图片描述
现在我们打开第二页看下
第二页
这里就发现了一个问题,打开第二页后 ,下面的页面显示仍然为第1页;这个时候的页面中有30个写真集,页面的url为www.meizitu.com/a/list_1_1.html。
我们在该页面中任意点开一个写真集,每个写真集里边会有数张图片,这些图片证实我们想要了。
这是我们观察一下该页面的url,为:www.meizitu.com/a/5418.html。
可以选择直接访问图片页面的url来爬取,但是我们不确定页面的数字是否连续。所以我们选择先打开写真集列表页面,在打开写真集的页面的方式来访问,并保存我们想要的图片。

def getUrl(self,target_url,start_page,page_num):
        all_urls=[]
        for i in range(start_page,page_num+1):
            new_urls=re.sub('/list_1_\d','/list_1_%d'%i,target_url,re.S)
            all_urls.append(new_urls)
        return all_urls

用该代码可以得到所有待爬取写真集列表的url。然后再每个写真集的列表页面中,得到每个写真集的url。即

def getLink(self,page_link):
        page_html=requests.get(page_link,timeout=0.5)
        all_pic_link=re.findall('<a target=\'_blank\' href="(.*?)">',page_html.text,re.S)
        return all_pic_link

在该页面可以得到所有的图片,然后将其保存即可,整理代码如下。ps:改代码有点小问题,就是在最后几页的爬取过程中,图片的正则表达式不匹配,那几页的页面源码和最近页面的不一样。改一下正则表达式就可以了。

import re
import requests

class spider():
    def getUrl(self,target_url,start_page,page_num):
        all_urls=[]
        for i in range(start_page,page_num+1):
            new_urls=re.sub('/list_1_\d','/list_1_%d'%i,target_url,re.S)
            all_urls.append(new_urls)
        return all_urls

    def getLink(self,page_link):
        page_html=requests.get(page_link,timeout=0.5)
        all_pic_link=re.findall('<a target=\'_blank\' href="(.*?)">',page_html.text,re.S)
        return all_pic_link

    def getPic(self,page_url):
        pic_html=requests.get(page_url,timeout=0.5)
        all_pic_src=re.findall('<img alt=.*?src="(.*?)" /><br />',pic_html.text,re.S)
        return all_pic_src

    #需要提前新建文件夹
    def saveFile(self,pic_src,num):
        pic=requests.get(pic_src,timeout=0.5)
        f=open('pic\\'+str(num)+'.jpg','wb')
        f.write(pic.content)
        f.close



if __name__=='__main__':
    meizituSpider=spider()
    i=1
    url='http://www.meizitu.com/a/list_1_1.html'
    all_link=meizituSpider.getUrl(url,7,89)
    for link in all_link:
        print('准备爬取:'+link)
        all_pic_list=meizituSpider.getLink(link)
        for pic_url in all_pic_list:
            print(pic_url)
            all_pic=meizituSpider.getPic(pic_url)
            for pic_src in all_pic:
                #print(pic_src)
                try:
                    meizituSpider.saveFile(pic_src,i)
                    print(i)
                    i+=1
                except:
                    pass

下面是爬取到的图片。
妹子图
老司机尽情飙车吧。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

python 3.3 爬虫之爬取图片

今天没事用BeautifulSoup写了一个爬去

Python3.x爬虫教程:爬网页、爬图片、自动登录

摘要:本文将使用Python3.4爬网页、爬图片、自动登录。并对HTTP协议做了一个简单的介绍。在进行爬虫之前,先简单来进行一个HTTP协议的讲解,这样下面再来进行爬虫就是理解更加清楚。 一、H...

Python学习笔记56(爬虫:煎蛋网上的妹子图)

一.规律性: 1.每一张图片除了页码数,其他的不会变化 2.最新页面的地址是保存在:审查元素->body->body->content->comments->cp-pagenavi->class ...

python——图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 基础篇

python学习第一步——爬图,而爬图第一步——妹子图 这篇博客我将带领大家通过urllib2+BeautifulSoup来完成对网站:爱女神 上妹子图的爬取,大家坐稳,发车啦! 一、分析网站 爱...

Python3爬虫学习笔记2.1——爬文字-糗事百科

欢迎捧场,这次我们爬取糗事百科的幽默笑话大全,这里边只有文字内容,处理比较方便。为了匹配我们需要的笑话内容,我们选择用正则表达式来处理。尚有编码问题,请大家见谅。...

python——图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 进阶篇

在上一篇博客中:python——图片爬虫:爬取爱女神网站(www.znzhi.net)上的妹子图 基础篇 我讲解了图片爬虫的基本步骤,并实现了爬虫代码 在本篇中,我将带领大家对基础篇中的代码进行改善,...

Python爬虫之——爬取妹子图片

首先声明,本博文为我原创,但是我在看了 崔庆才 博主的文章之后加以自己的实际处理的所得,感谢 崔庆才 博主,写的爬虫文章都好,博主文章地址:http://cuiqingcai.com/3179.htm...

Python3爬虫学习笔记0.0——综述

欢迎捧场,博主前一段时间零零碎碎地学习了一些python爬虫的知识,现在把一些学习内容整理出来,水平有限,难免出现错误,希望大家能够批评指正,谢谢。...

Python3爬虫学习笔记1.2——模拟登录

欢迎捧场,上一篇我们学习了urllib官方库的一些使用方法,今天的主要工作内容是利用Python来模拟登录网站,我们选择用知乎做实验。PS:知乎有毒。...

<21>python学习笔记——爬虫3——断点续下

用MongoDB数据库记录已下载过的地址 使用PyMongo模块 直接代码: 主程序: #导入需要的包 from bs4 import BeautifulSoup import os from...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python3爬虫学习笔记2.2——爬图片-妹子图
举报原因:
原因补充:

(最多只允许输入30个字)