今天的第二发!受到“豆瓣妹子”网站的启发(不懂的自行百度),我觉得我也有责任有义务来一发!
毕竟自己写的程序合自己的口味嘛,也比较灵活,可随时更改需要爬的小组地址,下载不同口味的图片 ~
直接上程序,python3.3.2版本:
1 # -*- coding: utf-8 -*- 2 # ----------------------------------------------- 3 # 程序:豆瓣小组图片爬虫 4 # 版本:1.0 5 # 语言:Python 3.3.2 6 # 作者:RAUL 7 # 操作:输入豆瓣小组讨论版块地址、起始页面、终止页面 8 # 功能:下载小组帖子里发布的图片 9 # 注意:下载的保存地址为作者本机地址 读者根据自身情况更改 10 # ----------------------------------------------- 11 12 import urllib.request,re,time 13 14 def get_html_response(url): 15 html_response = urllib.request.urlopen(url).read().decode('utf-8') 16 return html_response 17 18 # ------------ begin ---------------------------- 19 # 输入示例 20 # http://www.douban.com/group/Xsz/discussion?start= 21 # 1 22 # 2 23 24 url = str(input(u'请输入豆瓣小组地址,去掉start=后面的数字: ')) 25 page_bgn = int(input(u'请输入开始时的页码: ')) 26 page_end = int(input(u'请输入结束时的页码: ')) 27 num_end = (page_end-1)*25 28 num_now = (page_bgn-1)*25 29 30 while num_now <= num_end: 31 # 获得主题列表页面 32 html_topic_list = get_html_response(url+str(num_now)) 33 34 # 获得主题列表 35 re_topic_list = r'http://www.douban.com/group/topic/d+' 36 topic_list = re.findall(re_topic_list,html_topic_list) 37 38 # 遍历每个主题 将其中图片下载下来 39 for topic_url in topic_list: 40 print('topic_url '+topic_url) 41 html_topic = get_html_response(topic_url) 42 43 # 进入主题 获得图片下载地址列表(图片可能有多张) 44 re_img_list = r'http://imgd.douban.com/view/group_topic/large/public/.+.jpg' 45 img_list = re.findall(re_img_list,html_topic) 46 47 # 遍历图片下载地址列表 把每张图片保存到对应位置 48 for img_url in img_list: 49 print('img_url: '+img_url) 50 img_name = re.findall(r'pd{7}',img_url) 51 download_img = urllib.request.urlretrieve(img_url,'D:MySoftwarePython33CodeSpidergirls\%s.jpg'%img_name) 52 time.sleep(0.5) 53 num_now = num_now + 25 54 else: 55 print('采集完成!')
思路是这样:
1、输入的地址是豆瓣小组讨论版地址(去掉start=后面的) eg.http://www.douban.com/group/Xsz/discussion?start=
2、程序把以上地址中的各个帖子地址汇编进列表,得到主题列表
3、遍历主题列表,进入主题,获取该主题中的所有图片地址列表
4、遍历图片地址列表,将每张图片保存到本地
挺有成就感的 .. 明天不能继续了 .. 要ASP.NET搞起了