Python爬虫——按照关键词爬取视觉中国高清图像

2023-05-16

当前对版权保护日益严格,因此在此说明爬取的图像仅做研究和个人使用,禁止用作商用目的。
该爬虫方法可应用到其它允许爬虫的网址

查看网页源代码寻找高清图像链接

以关键词明星为例,搜索后的网址为 https://www.vcg.com/creative/search?phrase=明星
在chrome下ctrl+u或者右键查看源代码,搜索.jpp会找到很多图片的网址,经查验,最高清的图像链接格式为:“url800”:“图像网址”,即在源代码的最后,见下图.
网页源代码中高清图片的位置

程序示例

Step 1 导入必要Python包

from urllib import request
import os
import re #正则表达式库

Step 2 定义保存路径函数

#输入类别名称,子类别名称,文件名,输出图片路径
def get_path(classname,subclassname,filename):
    #获取当前工作路径
    cwd = os.getcwd()
    #获取图像的保存目录
    dir_path = cwd+'/vcg_test/' + classname +'/'+ subclassname
    #目录是否存在,不存在则创建目录
    if os.path.exists(dir_path):
        pass
    else:
        os.makedirs(dir_path)
    #获取图像的绝对路径
    file_path = dir_path +'/'+ filename
    return file_path

Step 3 按照关键词爬取图片

假设我们希望爬取“明星”和“动漫人物”两种关键词下的图片,我们希望爬取的图片中仅有一个人方便使用,则代码如下:

classnames = ['super_star','cartoon'] #假设我们分类是明星和动漫人物
keypoints = ['%E6%98%8E%E6%98%9F','%E5%8A%A8%E6%BC%AB%E4%BA%BA%E7%89%A9'] #关键字对应
gender_file_path = ['male','female'] #对于人的分类检索可以按性别筛选
all_page = 35 #想要下载的总页数,其中每页与检索相同,为100张
for class_index, phrase in enumerate(classnames):
    sum_all_num = 0
    if class_index >= 0  : #从某一类断开则选择该类为起始点 
   # if class_index == 1  : #例如下载动漫人物时被服务器Kill掉可以改为该行继续下载 
      for gender_index,gender in enumerate(gender_file_path):
        if gender_index >= 0 : #从性别某类断开则选择该类为起始点 
          for page in range(1,all_page+1):
            num_in_page = 1
            #获得url链接,这里额外增加了筛选条件:图片中仅有一个人
            url = 'https://www.vcg.com/creative/search?phrase=' + keypoints[class_index] +'&creativePeopleNum=2&creativeGender=' +str(gender_index+1)+'&page='+str(page)
            header = {
                'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36',
#                'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' 
             }    
            req = request.Request(url=url,headers=header)
            openhtml = request.urlopen(req).read().decode('utf8')   


            #正则表达式
            com = re.compile('"url800":.*?/creative/.*?.jpg"')
    
            # 匹配URl地址
            urladds = com.findall(openhtml)
            for urladd in urladds:
            #try ... except防止匹配出错后程序停止
              try:
                add = 'http:'+urladd.strip('"url800":')  
                #获取文件名称,格式:vcg+性别+获取方式+page+page中的第几张图片,vcg_raw代表原vcg网站对性别分类
                filename = classnames[class_index]+'_'+gender_file_path[gender_index]+'_vcg_raw_page'+str(page)+'_'+str(num_in_page)+'.jpg'
                path = get_path(classnames[class_index],gender_file_path[gender_index],filename)
                print('当前下载...',filename)
                
                dom = request.urlopen(add).read()
                with open(path,'wb') as f:
                    f.write(dom)
                    sum_all_num += 1
                    num_in_page += 1
              except:
                print('当前该任务总共总共下载:',sum_all_num) #监控进度
              if sum_all_num % 50 == 0: #监控进度
                print('当前该任务总共下载:',sum_all_num)

Step 4 查看爬取图像的质量

单张图片约100kb左右,尺寸约800*533.
由于未获取图片版权,因此就不展示爬取的图片了.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫——按照关键词爬取视觉中国高清图像 的相关文章

随机推荐

  • 自动驾驶之3D点云聚类算法调研

    1 方法 总共分为4类 基于欧式距离的聚类Supervoxel 聚类深度 Depth 聚类Scanline Run 聚类 1 1 基于欧氏距离的聚类 思路 在点云上构造kd tree 然后在某个半径阈值 例如0 5m 则分割为一个实例 相似
  • 自动驾驶之夜间检测调研

    1 ExDark 第一个 公开 特定的提供 natural low light images for object的数据集 7363张 low light images 12 classes Low light image enhancem
  • 自动驾驶之行人轨迹预测数据集

    一 Real Data ETH Univ 43 Hotel 750 pedestrians exhibiting complex interactions UCY Zara01 Zara02 and Uni 780 pedestrians
  • 自动驾驶之单目3D目标检测TensorRT调研

    目前在github上只能找到2个项目 TensorRT CenterNet 3D tkDNN 两者都是使用CenterNet xff0c 但第1个基于TensorRT5 无法与当前最新的TensorRT6和TensorRT7兼容 经测试 x
  • 秋招之字节面试智力题

    1 倒水 只有两个无刻度的水桶 xff0c 一个可以装6L水 xff0c 一个可以装5L水 xff0c 如何在桶里装入3L的水 6L装满倒入5L xff0c 剩1L5L倒出 1L倒入5L6L装满倒入5L剩2L5L倒出 xff0c 2L倒入5
  • 数学专业外语之一: 基本概念与术语

    一 四则运算 加法 plus xff0c 1 43 2 one plus two减法 minus 3 2 three minus two乘法 times or multiplied by xff0c 3x2 three times two
  • 数学专业外语之二: 阅读理解与翻译初步

    一 比 率与比例 number xff1a 数 xff1b number axis xff1a number theory xff1a 数论 xff1b the number of xff1a 的数量quantity xff1a 量 xff
  • 从iphone一代看产品创新

    第一代iPhone2007年6月29日正式发售 xff0c 可能大多数人接触Iphone是从iphone4开始 xff0c 先展示一下iphone一代 xff0c 提醒一下这是2007年的一款手机 xff0c 当时市面所有手机都是键盘机 x
  • 自动驾驶之3D目标检测的SMOKE算法

    SMOKE Single Stage Monocular 3D Object Detection via Keypoint Estimation 论文github知乎 一 数据集 KITTI 1 1 输入 单张图像 xff1a 1242x3
  • 自动驾驶之车道线检测调研与实测

    一 LaneNet 论文代码 xff1a github python tensorflow 1 15 1 1 主要过程 inference xff0c 分上下两个分支 xff0c 如图 Enocder decoder stage 图像空间编
  • 推荐系统之AUC指标的一些理解

    以下是在一些整理的和自己的关于AUC的理解 1 AUC和GAUC的区别 auc反映的是整体样本间的一个排序能力 在计算广告领域 实际要衡量的是不同用户对不同广告之间的排序能力 因此实际应该更关注的是同一个用户对不同广告间的排序能力 GAUC
  • 逻辑回归相关问题整理

    1 写逻辑回归的logloss损失函数 对于样本 x x x xff0c 输出为 p x i
  • 如何防止softmax函数overflow和underflow?

    上溢出 xff1a c极其大的时候 xff0c 计算 e c e c e c 下溢出 xff1a 当c趋于负无穷的时候 xff0c 分母是一个极小的数 xff0c 导致下溢出 解决方法 令
  • 使用matplotlib绘图库的pyplot快速绘图

    使用matplotlib绘图库的pyplot快速绘图 matplotlib是Python最常用的绘图库 xff0c 在结果或数据可视化中常用pyplot实现快速绘图 xff0c 下面参考张若愚主编的Python科学计算 xff08 第2版
  • 经典的机器学习二分类算法——Logistic回归

    问题描述 对于维度为 m 43 1 m 43 1 特征为 x x 样本的二分类问题 有负类 Negative Class 记为 0 0 xff0c 正类 xff08 Positive Class xff09 记为 1
  • Python调用face++API完成本地图片的人脸检测

    Python调用face 43 43 API完成本地图片的人脸检测 简单调用face 43 43 API对本地图片进行人脸检测 xff0c 输出基本信息到csv文件 注册face 43 43 账号 face 43 43 网址 https w
  • Libsvm在windows下使用细节汇总

    0 下载Libsvm Libsvm官网 https www csie ntu edu tw cjlin libsvm 下载后将其解压到本地 xff0c 这里 xff0c 我的本地路径为 xff1a C Anaconda3 Lib sit p
  • 表情识别数据集汇总

    参考文献 xff1a Deep Facial Expression Recognition A Survey 网址 https arxiv org pdf 1804 08348 pdf CK 43 http www pitt edu emo
  • 实时系统和非实时系统的区别

    嵌入式操作系统分为实时系统和非实时系统两类 xff0c 常见的实时系统有 xff1a ThreadX FreeRTOS ucOS 常见的非实时系统有 xff1a windows linux Android 两类操作系统的主要区别在于任务调度
  • Python爬虫——按照关键词爬取视觉中国高清图像

    当前对版权保护日益严格 xff0c 因此在此说明爬取的图像仅做研究和个人使用 xff0c 禁止用作商用目的 该爬虫方法可应用到其它允许爬虫的网址 查看网页源代码寻找高清图像链接 以关键词明星为例 xff0c 搜索后的网址为 https ww