zoukankan      html  css  js  c++  java
  • 爬取网上的图片

    from urllib.request import urlopen
    from urllib import request
    import re
    import requests
    
    
    def open(url):
        """
        将网站内容转换成字符串
        :param url:
        :return: 字符串
        """
        u = urlopen(url).read().decode('gbk')  # 将网站打开,并将网页内的内容转换成gbk类型的字符串
        return u
    
    
    def gaoqing(urlname, url):
        """
        找到高清图片的地址
    
        :param urlname: 文件的名称
        :param url: 图片的查看地址
        :return:
        """
        url = f"http://pic.netbian.com{url}"  # 将图片的地址和官网拼接成图片的查看图片的地址
        u = urlopen(url).read().decode('gbk')  # 将网站内容转换成字符串
        a = re.search('<img src="(?P<pic>.*?)" data-', u)  # 利用正则找出图片的具体地址
        path = 'http://pic.netbian.com' + a.group(1)  # 拼接
        s = pic_file(urlname, path)  # 下载,图片
    
    
    def pic_file(jpg_name, path):
        request.urlretrieve(path, f'./图片存放/{jpg_name}.jpg')  # 下载图片,保存到./图片存放目录下
        return True
    
    
    def com_index(str_path, num):
        cod = {}
        com = re.search('<ul class="clearfix">.*?</ul>', str_path, re.S)
        #  查找页面内的图片地址存放区域
        if num == 1:
            # 第一页
            com_url = re.compile(r'<li><a href="(?P<url>.*?)" title="(?P<title>.*?)" target=', re.S)
            # 查找图片的查看地址
    
        elif num > 1:
            # 不是第一页时
            com_url = re.compile(r'<li><a href="((?P<url>.*?))".*?alt="(?P<title>.*?)" /><b>',
                                 # 查找图片的查看地址,和图片名称
                                 re.S)
        com_url = com_url.finditer(com.group())  # 将查找到的图片查看地址和名称,利用finditer
        for i in com_url:
            cod[i.group('title')] = i.group('url')  # 将 写入到字典返回。
        return cod
    
    
    for i in range(230, 1136):
        # 网站一共有1135页,
        cod = {}
        try:
            if i == 1:
                url = 'http://pic.netbian.com/index.html'  # 首页地址
            elif i > 1:
                url = f'http://pic.netbian.com/index_{i}.html'  # 其他页的地址
            a = open(url)   # 获得网页内容的字符串
            cod = com_index(a, i) # 获得网页中图片的查看地址,和图片名称对应的字典
            for k, i in cod.items():
                gaoqing(k, i)     # 获得图片的具体地址,并下载 
        except:
            continue
  • 相关阅读:
    Redis持久化
    《Hadoop权威指南·大数据的存储与分析》阅读笔记(未读完)
    《redis设计与实现》第一版 阅读笔记(未看完)
    LSMTree -> SStable 初体验
    Goland实现Set操作
    使用Goland操作Redis详解
    使用Python操作Redis详解
    学习笔记
    docker技术入门与实战 第三版
    Shell(笔记)
  • 原文地址:https://www.cnblogs.com/mk-lovefreedom/p/10611078.html
Copyright © 2011-2022 走看看