首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476]

图片种类对应编号

1:'性感', 2:'有沟', 3:'美腿', 4:'小露点',
6:'所有男', 7:'肌肉男', 8:'清新男', 9:'有意思' ,
10:'所有', 11:'小清新', 12:'文艺', 13:'文艺男', 14:'美臀'

图片地址形如data-bigimg="http://pic.dbmeizi.com/pics/nn2nn2nn/p12378370.jpg"

-----源代码meizi.py-----

 import re, os, time
 import urllib.request

 def getHtml(url):#取得网页的html纯文本
     return urllib.request.urlopen(url).read().decode('utf-8')

 def download(url, filename):#将文件下载到本地
     urllib.request.urlretrieve(url, filename)

 if __name__ == '__main__':
     print('---豆瓣妹子抓图机---')
     dic = {1:'性感', 2:'有沟', 3:'美腿', 4:'小露点',
            6:'所有男', 7:'肌肉男', 8:'清新男', 9:'有意思' ,
            10:'所有', 11:'小清新', 12:'文艺', 13:'文艺男', 14:'美臀'}
     for i in dic.keys():
         print('{:<15}'.format(str(i)+'--'+dic[i]), end='')
         if i%4==0: print()
     category = int(input('\n请输入抓取类别:'))
     pageNo1 = int(input('请输入抓取页面起始编号(0-476):'))#2014.5.5正好476页
     pageNo2 = int(input('请输入抓取页面终止编号(0-476):'))
     for no in range(pageNo1, pageNo2+1):
         url = 'http://dbmeizi.com/category/{}?p={}'.format(category, no)
         html = getHtml(url)
         reMeizi = r'(?<=bigimg=").+jpg'
         pics = re.findall(reMeizi, html)
         folder = 'D:/DBMeizi/{}/{}/'.format(dic[category], no)
         if not os.path.exists(folder):
             os.makedirs(folder)
         logfile = open(folder+'log.txt', 'wt')
         logfile.write('图片来源:'+ url +'\n图片链接:\n')
         for pic in pics:
             print('正在下载', pic)
             try:
                 download(pic, folder+pic[-13:])
             except:
                 print('下载出错')
                 logfile.write(pic + ' 下载出错!\n')
                 continue
             logfile.write(pic+'\n')
         logfile.close()
         print('下载' + dic[category] +'['+ str(no) +']结束。')
         time.sleep(1)
     print('全部任务结束。')
     

Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子的更多相关文章

  1. Python -- 网络编程 -- 抓取网页图片 -- 图虫网

    字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...

  2. Asp.net 使用正则和网络编程抓取网页数据(有用)

    Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...

  3. python网络爬虫抓取网站图片

    本文介绍两种爬取方式: 1.正则表达式 2.bs4解析Html 以下为正则表达式爬虫,面向对象封装后的代码如下: import urllib.request # 用于下载图片 import os im ...

  4. 如何利用Python网络爬虫抓取微信朋友圈的动态(上)

    今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...

  5. 利用Python网络爬虫抓取微信好友的签名及其可视化展示

    前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...

  6. 如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

    前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣 ...

  7. Python3简单爬虫抓取网页图片

    现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...

  8. 抓取网页图片的脚本(javascript)

    抓取网页图片的脚本(javascript) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24172223 脚本内容 (没有换行) ...

  9. 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化

    前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将 ...

随机推荐

  1. struts2从浅至深(五)上传与下载

    1.编写上传页面 2.编写动作方法 import java.io.File;import java.io.IOException; import javax.servlet.ServletContex ...

  2. _RecordsetPtr使用方法

    _variant_t vUsername,vID,vname; //变量声明 _RecordsetPtr m_pRecordset;     //记录集 CString strid; _Connect ...

  3. B样条参数曲线学习(1)

    B样条参数曲线学习 Bezier曲线有许多优越性,但有两点不足: (1) 特征多边形的顶点个数决定了Bezier曲线的阶次,并且在阶次较大时,特征多边形对曲线的控制将会减弱: (2) Bezier曲线 ...

  4. 用Lucene实现分组,facet功能,FieldCache

    假如你像用lucene来作分组,比如按类别分组,这种功能,好了你压力大了,lucene本身是不支持分组的. 当你想要这个功能的时候,就可能会用到基于lucene的搜索引擎solr. 不过也可以通过编码 ...

  5. VLC简介及使用说明

    一.简介    VLC的全名是Video Lan Client,是一个开源的.跨平台的视频播放器.VLC支持大量的音视频传输.封装和编码格式,完整的功能特性列表可以在这里获得http://www.vi ...

  6. Java何时该使用覆盖?

    在Java编程中,什么时候该使用覆盖函数操作呢,很多人都知道有覆盖操作,但是到底什么时候该使用覆盖操作,还是有一些模糊的感觉,以下就举例来用代码分析就明白了, 举例生活中的案例,模拟制造手机的公司: ...

  7. AbpZero之企业微信---登录(拓展第三方auth授权登录)---第一步:查看AbpZero的auth第三方登录的底层机制

    在AbpZero框架中,auth登录接口位于Web.Core库下的Controllers文件夹的TokenAuthController.cs的ExternalAuthenticate方法 Extern ...

  8. MongoDB Windowns 配置使用

     MongoDB 下载 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mo ...

  9. mysql恢复备份错误:Got a packet bigger than 'max_allowed_packet' bytes

    最近恢复mysql数据库备份时,出现了一个错误:Got a packet bigger than 'max_allowed_packet' bytes 该问题主要是由于mysql的my.ini文件中设 ...

  10. 队列(链式队列)----C语言

    链式队列----用链表实现,链式队列就是一个操作受限的单向链表,如果读者了解单向链表的建立过程,那理解链式队列就很容易了,先回顾一下单向链表的建立过程 (不熟悉单向链表的可以先看看另一片随笔,再回来看 ...