• Python 网络爬虫(图片采集脚本)


    ===============爬虫原理==================

    通过Python访问网站,获取网站的HTML代码,通过正则表达式获取特定的img标签中src的图片地址。

    之后再访问图片地址,并通过IO操作将图片保存到本地。

    ===============脚本代码==================

    import urllib.request  # 网络访问模块
    import random  # 随机数生成模块
    import re  # 正则表达式模块
    import os  # 目录结构处理模块
    
    # 初始化配置参数
    number = 10  # 图片收集数量
    path = 'img/'  # 图片存放目录
    
    # 文件操作
    if not os.path.exists(path):
        os.makedirs(path)
    
    
    # 图片保存
    def save_img(url, path):
        message = None
        try:
            file = open(path + os.path.basename(url), 'wb')
            request = urllib.request.urlopen(url)
            file.write(request.read())
        except Exception as e:
            message = str(e)
        else:
            message = os.path.basename(url)
        finally:
            if not file.closed:
                file.close()
            return message
    
    
    # 网络连接
    http = 'http://zerospace.asika.tw/photo/'  # 目标网址
    position = 290 + int((1000 - number) * random.random())
    ids = range(position, position + number)
    for id in ids:
        try:
            url = "%s%d.html" % (http, id)  # 后缀生成
            request = urllib.request.urlopen(url)
        except Exception as e:
            print(e)
            continue
        else:
            buffer = request.read()
            buffer = buffer.decode('utf8')
            pattern = 'class="content-img".+s+.+src="(.+.jpg)"'
            imgurl = re.findall(pattern, buffer)  # 过滤规则
            if len(imgurl) != 0:
                print(save_img(imgurl[0], path))
            else:
                continue
        pass

    ===============运行结果==================

  • 相关阅读:
    图解JQUERY尺寸及位置定义
    JS中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
    js拖拽的封装
    Git详解之九:Git内部原理
    Git详解之八:Git与其他系统
    量化投资的Python库——Tushare
    Python数据分析-Day2-Pandas模块
    Python数据分析-Day1-Numpy模块
    Python全栈开发-Day8-Socket网络编程
    Python全栈开发-Day7-面向对象编程2
  • 原文地址:https://www.cnblogs.com/woider/p/5918543.html
Copyright © 2020-2023  润新知