• python——爬取图片(shutter图片网)


    在本爬虫程序中共有三个模块:

    1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况

    2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。

    (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL管理器中取出一个待爬取的URL,传递给网页下载器。

    (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。

    (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器

    3、数据输出模块:存储爬取的图片

    具体思路就是根据正则表达式,找到url,然后完成下载。

    设计环境

    IDESublime Text3

    Python版本:python3.7

    目标分析

    目标:从https://www.shutterstock.com/zh/search/开始,爬取多个类别的前十张图片

    (1)初始URL"https://www.shutterstock.com/zh/search/"

    (2)词条页面URL格式:

    https://www.shutterstock.com/zh/search?searchterm=Architecture&image_type=photo

    (3)找到backgrounds,Architecture,business,kids,food,portrait,flowers,travel等类别标签名

    代码如下:

     import requests
    import re
    import urllib.request
    import time
    
    headers = {
    
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
    }
    
    url_base = 'https://www.shutterstock.com/zh/search/'
    imge_list = []
    
    for i in ['backgrounds','Architecture','business','kids','food','portrait','flowers','travel','skyline']:
        url = url_base+i+'?image_type=photo'
    
        res = requests.get(url,headers= headers).text
        
        # 为图片生成缩略图
        #"thumbnail":"(.*?)",
        cop = re.compile('"thumbnail":"(.*?)",',re.S)
        result = re.findall(cop,res)[:10]
        for each in result:
            filename = each.split('/')[-1]
            #imge_list.append(each) #[90]
    
            response = urllib.request.urlopen(each)
            img = response.read()
            with open(filename,'wb')as f:
                f.write(img)
            print("已下载:",each)
    
            time.sleep(5) # 休眠五秒
    
    print("下载结束")

    结果:

    遇到的问题


    (1)爬取几张图片后,没有产生新的图片。原因:因为是外国网站,访问次数过多,会被限制访问。
    解决方法:设置sleep函数,休眠几秒继续访问。


    (2)英文页面不要随便翻译,会使源码标签显示错误!
    解决方法:确认浏览器是否自动翻译过,可以获取一下他的页面,然后找想要的标签,不存在,则有两种情况,动态或者被翻译过。

  • 相关阅读:
    Django Rest framework FilterSet 设置 help_text
    树莓派:灯光,相机,动作,和非现场存储
    CFileDialogST v1.0
    使任何应用程序透明的Windows 2000/XP
    产生半透明的对话框和窗口没有闪烁
    一个酷的皮肤GUI与阴影边界
    使用图像蒙皮的表单
    一个控制皮肤组织的控制
    写一个潦草的应用程序使用可视化组件框架
    CRegionCreator
  • 原文地址:https://www.cnblogs.com/yezishen/p/12079321.html
Copyright © 2020-2023  润新知