• 花瓣网图片爬取


    
    
     1 import urllib.request
     2 import re
     3 import os
     4 import datetime
     5 import easygui
     6 
     7 # 获取网页
     8 def get_html(url):
     9     page = urllib.request.urlopen(url)
    10     html = page.read().decode('utf-8')     #需要解码
    11     return html
    12 
    13 # 下载图片
    14 def get_image(path,html):
    15     # 获取HTML源码里面的app.page["pins"]部分,主要图片ID位于此部分
    16     get_app_page_pins = re.compile(r'app.page["pins"].*?;', re.S)
    17     get_str = re.findall(get_app_page_pins, html)[0]
    18 
    19     pin_id = r'"pin_id":(d+)'
    20     pin_id_re = re.compile(pin_id)
    21 
    22     # 获取图片ID,保存在列表中
    23     id_list = re.findall(pin_id_re,get_str)
    24 
    25     x = 0
    26     for pinId in id_list:
    27         # 获取跳转网页网址
    28         url_str = r'http://huaban.com/pins/%s/' % pinId
    29         # 获取点击图片时弹出网页的源码
    30         pinId_source = get_html(url_str)
    31         # 解析源码,获取原图片的网址
    32         img_url_re = re.compile('main-image.*?src="(.*?)"', re.S)
    33         img_url_list = re.findall(img_url_re, pinId_source)
    34         try:
    35             img_url = 'http:' + img_url_list[0]
    36             urllib.request.urlretrieve(img_url, path + '\%s.jpg' % x)
    37         except:
    38             print("获取图片:%s失败,跳过,获取下一张。" % img_url)
    39             continue
    40         print("获取成功!%s" % img_url)
    41         x += 1
    42     print("保存图片成功!")
    43 
    44 # 创建文件夹路径
    45 def createPath():
    46     while True:
    47         print('选择你要保存的路径')
    48         path = easygui.diropenbox()
    49 
    50         filePath = path + "\" + str(datetime.datetime.now().strftime('%Y-%m-%d %H.%M.%S'))
    51 
    52         isExists = os.path.exists(filePath)
    53         if not isExists:
    54             # 创建目录
    55             os.makedirs(filePath)
    56             print('%s创建成功!' % filePath)
    57             break
    58         else:
    59             print('%s已存在重新输入!' % filePath)
    60     return filePath
    61 
    62 if __name__ == '__main__':
    63     html = get_html("http://huaban.com/favorite/beauty/")
    64     get_image(createPath(), html) #调用创建文件夹方法并返回文件夹路径和传入网址
  • 相关阅读:
    css实现右侧三角
    css 应用 给头像添加标签
    css中伪选择器使用
    服务器上的项目不能对外发送请求
    视频只能播放一两帧,PDF文件60k以上加载失败的问题,静态访问也一样
    spring集成mybatis 打印sql语句
    新浪股票代码
    linux 设置mysql密码
    linux启动mysql服务报错
    配置eclipseJVM虚拟机内存大小
  • 原文地址:https://www.cnblogs.com/lbx6935/p/9618460.html
Copyright © 2020-2023  润新知