首先分析页面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. (并查集 添加关系)How Many Answers Are Wrong --Hdu --3038

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=3038 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  2. Bellman_ford货币兑换——正权回路判断

    POJ1860 题目大意:你在某一点有一些钱,给定你两点之间钱得兑换规则,问你有没有办法使你手里的钱增多.就是想看看转一圈我的钱能不能增多,出现这一点得条件就是有兑换钱得正权回路,所以选择用bellm ...

  3. MathJax $TeX$ Test Page

    MathJax TeX Test Page When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are ...

  4. ADO.NET系列之Connection对象

    ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 ADO.NET概念 ADO ...

  5. MongoDB Windowns 配置使用

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

  6. HttpWebRequest和WebClient的用法

    //通过web方式,从远程服务器端下载文件: public static void DownLoad(string Url, string FileName, string machinetype) ...

  7. winform :DataGridView添加一列checkbox

    #region 添加checkbox列   public void AddCheckBox()        { DataGridViewCheckBoxColumn columncb = new D ...

  8. 修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”

    转:http://gcdn.gcpowertools.com.cn/showtopic-13759.html ActiveReports官方网站:http://www.gcpowertools.com ...

  9. 【cocos2d-x 手游研发----地图活起来了】

    谈到地图不少人都说要做地图编辑器了,但是我暂时绕过这一步,如果不用寻路地图就不能移动?寻路就是会绕过障碍物的算法. 我做了一个简单的地图的思想,就是地图分层3层:背景层.可行区域层.遮罩层,但是地图就 ...

  10. Restframework 认证authentication 组件实例-1

    1. 创建用户表和 token表 class User(models.Model): user =models.CharField(max_length=) pwd =models.CharField ...