Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子
首先分析页面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 -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子的更多相关文章
- Python -- 网络编程 -- 抓取网页图片 -- 图虫网
字符串(str)编码成字节码(bytes),字节码解码为字符串 获取当前环境编码:sys.stdin.encoding url编码urllib.parse.quote() url解码urllib.pa ...
- Asp.net 使用正则和网络编程抓取网页数据(有用)
Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...
- python网络爬虫抓取网站图片
本文介绍两种爬取方式: 1.正则表达式 2.bs4解析Html 以下为正则表达式爬虫,面向对象封装后的代码如下: import urllib.request # 用于下载图片 import os im ...
- 如何利用Python网络爬虫抓取微信朋友圈的动态(上)
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌 ...
- 利用Python网络爬虫抓取微信好友的签名及其可视化展示
前几天给大家分享了如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化,利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,以及利用Python网络爬虫抓取微信好友的所 ...
- 如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态——附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣 ...
- Python3简单爬虫抓取网页图片
现在网上有很多python2写的爬虫抓取网页图片的实例,但不适用新手(新手都使用python3环境,不兼容python2), 所以我用Python3的语法写了一个简单抓取网页图片的实例,希望能够帮助到 ...
- 抓取网页图片的脚本(javascript)
抓取网页图片的脚本(javascript) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24172223 脚本内容 (没有换行) ...
- 利用Python网络爬虫抓取微信好友的所在省位和城市分布及其可视化
前几天给大家分享了如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例,感兴趣的小伙伴可以点击链接进行查看.今天小编给大家介绍如何利用Python网络爬虫抓取微信好友的省位和城市,并且将 ...
随机推荐
- (并查集 添加关系)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 ...
- Bellman_ford货币兑换——正权回路判断
POJ1860 题目大意:你在某一点有一些钱,给定你两点之间钱得兑换规则,问你有没有办法使你手里的钱增多.就是想看看转一圈我的钱能不能增多,出现这一点得条件就是有兑换钱得正权回路,所以选择用bellm ...
- 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 ...
- ADO.NET系列之Connection对象
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 ADO.NET概念 ADO ...
- MongoDB Windowns 配置使用
MongoDB 下载 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB 预编译二进制包下载地址:https://www.mo ...
- HttpWebRequest和WebClient的用法
//通过web方式,从远程服务器端下载文件: public static void DownLoad(string Url, string FileName, string machinetype) ...
- winform :DataGridView添加一列checkbox
#region 添加checkbox列 public void AddCheckBox() { DataGridViewCheckBoxColumn columncb = new D ...
- 修改ActiveReports验证文字“给不能为 null 的参数指定一个 null 值”
转:http://gcdn.gcpowertools.com.cn/showtopic-13759.html ActiveReports官方网站:http://www.gcpowertools.com ...
- 【cocos2d-x 手游研发----地图活起来了】
谈到地图不少人都说要做地图编辑器了,但是我暂时绕过这一步,如果不用寻路地图就不能移动?寻路就是会绕过障碍物的算法. 我做了一个简单的地图的思想,就是地图分层3层:背景层.可行区域层.遮罩层,但是地图就 ...
- Restframework 认证authentication 组件实例-1
1. 创建用户表和 token表 class User(models.Model): user =models.CharField(max_length=) pwd =models.CharField ...