• 【安全】爬虫之旅(2)— 豆瓣小组图片爬虫


    今天的第二发!受到“豆瓣妹子”网站的启发(不懂的自行百度),我觉得我也有责任有义务来一发!

    毕竟自己写的程序合自己的口味嘛,也比较灵活,可随时更改需要爬的小组地址,下载不同口味的图片 ~

    直接上程序,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搞起了

  • 相关阅读:
    一步一步写平衡二叉树(AVL树)
    sql关键字
    Remoting技术的应用
    算法:最大公约数
    算法冒泡排序
    C#编码好习惯
    利用VB.Net编程实现PC与掌上电脑PPC间的双向通信
    .Net Remoting与Server 对象详解
    算法迭代和递归
    SQL关键字系列之:minus与intersect
  • 原文地址:https://www.cnblogs.com/raul-ac/p/3502597.html
Copyright © 2020-2023  润新知