图片两种爬取方法--crawler

详细教程 :crawler4j 爬取京东商品信息 Java爬虫入门 crawler4j教程 现今比较流行的爬虫语言,属Java、paython和c语言,笔者学习的是Java语言,所以介绍下使用Java如何爬取网页信息。我们先从一个最原始的Java爬虫demo开始,再来看如何使用crawler4j这个框架进行爬虫。Demo使用Java的Url对象,指向网址并建立连接,获取输入流,解析流中的信息。该Demo只需一个jdk即可,不用引入其他jar包,下面请看源码。public static v... 阅读详情

一、普通方法下载图片

        1.下载安装模块:pip install urllib

        这个库常用两个函数:request 主要用于请求网页,parse主要用于解析URL,并提供许多解析URL的方法

        2.常用到的一些方法

        request . urlretrieve()下载文件和内容

        parse . urlencode() 将字典转成url能识别的字符串拼接到URL

        parse . parse_qs() 将url字符转为字典

        request . urlopen() 模拟浏览器向目标服务器发送请求

        parse . unquote() 中文解码

        切割url路径
            parse . urlparse(url)
            parse . urlsplit(url)

        3.英雄皮肤图片下载源码:

from urllib import request,parse
import re
for i in range(10):
    # 请求地址的页数信息是变化的
    url=f'https://apps.game.qq.com/cgi-bin/ams/module/ishow/V1.0/query/workList_inc.cgi?activityId=2735&sVerifyCode=ABCD&sDataType=JSON&iListNum=20&totalpage=0&page={i}&iOrder=0&iSortNumClose=1&jsoncallback=jQuery171046841982663298865_1654507567751&iAMSActivityId=51991&_everyRead=true&iTypeId=2&iFlowId=267733&iActId=2735&iModuleId=2735&_=1654508531011'
    res=request.urlopen(url)
    date=res.read().decode('utf-8')
    # 图片尺寸大小信息对应的值 sProdImgNo_2 数字项是变化的
    image_size = {"2": "sProdImgNo_2", "3": "sProdImgNo_3", "4": "sProdImgNo_4", "5": "sProdImgNo_5","6": "sProdImgNo_6", "7": "sProdImgNo_7", "8": "sProdImgNo_8"}
    # 正则查找图片名字信息的 list
    namelist=re.findall(r'"sProdName":"(.*?)"',date)
    print(namelist)
    # 正则查找包含图片大小的url信息 list
    for j in image_size:
        sizelist = re.findall(r'"' + image_size[j] + '":"(.*?)"', date)
        print(sizelist)
        # 根据名字信息和图片url信息拼接 并下载图片
        for i in range(len(sizelist)):
            # 对名字部分转码,组装为图片名字
            name=parse.unquote(namelist[i])+'.jpg'
            # 普通下载并不是高清图,替换后缀 '/200' 为 '/0'
            image_url=parse.unquote(sizelist[i]).replace('/200','/0')
            print('正在下载',name)
            request.urlretrieve(image_url,'images'+name)
            print(name,'下载完成')

        4.下载后的效果如下:

二、多线程下载图片方法:

        1.导入多线程模块:from concurrent.futures import ThreadPoolExecutor;

        2.创建多线程,并指定线程数:max_workers=10;这里相当于雇佣了10个工人帮我干活,提高了下载效率;

import requests
import os
from urllib import request
# 导入多线程模块
from concurrent.futures import ThreadPoolExecutor

def download_picture(url, heroname, skin_name):
    try:
        path = f'./picture/'+ heroname
        print(path)
        if not os.path.exists(path):
            os.mkdir(path)
            # 拼接下载图片的路径
        request.urlretrieve(url, f'{path}/{skin_name}.jpg')
        print(skin_name,'下载成功!')
    except Exception as e:
        pass

# 创建多线程
with ThreadPoolExecutor(max_workers=10) as executor:
    resp = requests.get(url='https://pvp.qq.com/web201605/js/herolist.json')
    # print(resp.text)
    resp_dict_lists = resp.json()
    # print(resp_dict_lists)
    for hero in resp_dict_lists:
        hero_name = hero['cname']
        # print('英雄名字:', hero['cname'])
        if 'skin_name' in hero:
            skin_name = hero['skin_name']
            # print('皮肤名字:', hero['skin_name'])
            skin_num = skin_name.count('|')
            skins = skin_name.split('|')
            heroname = hero_name
            for x in range(0, skin_num+1):
                # 拼接下载路径
                url = f'http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/{str(hero["ename"])}/{str(hero["ename"])}-bigskin-{str(x+1)}.jpg'
                # download_picture(url=url, heroname=heroname, skin_name=skins[x])   # 常规下载
                # 调用多线程下载
                executor.submit(download_picture, url, heroname, skins[x])

        总结:多线程方法,在下载访问效率上要远远优于普通下载,但是多线程也存在一些弊端,当线程数足够大,会出现数据之间交叉发生冲突,这就需要对线程加锁,这里就不展开详细介绍。

Python爬取百度图片(支持关键词搜索) import argparse #用于命令项选项与参数解析 import os #整理文件和目录 import re #正则表达式 进行文字匹配 import sys #argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。 import urllib import json import socket import urllib.request #制定url,获取网页. 阅读详情

相关推荐

UE5新手必看:Gameplay框架中的GameInstance与子系统实战指南(含蓝图配置)

本文为UE5新手提供了Gameplay框架中GameInstance与子系统的实战指南。文章深入解析了GameInstance作为全局数据中枢的核心作用与生命周期,并手把手演示了如何创建自定义GameInstance、构建模块化的子系统(如存档管理),以实现跨关卡的持久数据管理。指南旨在帮助开发者构建清晰、可维护的项目架构,解决数据管理混乱的常见痛点。

weixin_29015801的博客 574

爬虫案例:手把手教你爬取图片

大家好,我是一行今天是小白菜同学的投稿,老规矩一个赞10积分一、确认目标和思路:写在最前面:程序很简单,重要的是思路以及对错误的分析1.确认目标和大体思路: 今天我们需要爬取的网站是:h...

一行玩python 1万+

INCA_ProF脚本教程

一、首先INCA软件是当前主流标定开发软件之一,尤其在动力系统控制器的标定中应用非常广泛;与此同时ProF编程脚本是INCA软件提供各种实用功能之一,使用者可根据需求编写ProF脚本语言对ECU闪存编程等各种自定义操作。 二、然而ProF脚本语言在ETAS的官网或其他网络上并没有专门的使用教程,通常只有ETAS技术支持人员提供的ProF Documentation文档或少量可参考的Demo案例,然而ProF Documentation文档仅涉及ProF语言的函数的操作说明,没有从全局的框架上介绍Pro

weixin_29389627的博客 1万+

Python爬取图片

爬取网站https://image.baidu.com/

lidiaosi的博客 2万+

R语言vegan包实战:用varpart函数搞定生态学VPA分析(附完整代码与数据集)

本文详细介绍了如何使用R语言vegan包中的varpart函数进行生态学方差分解分析(VPA),包括数据准备、模型构建、结果解读和可视化呈现。通过完整的代码示例和数据集,帮助研究者理解不同环境因子对生物群落变化的相对贡献,并掌握显著性检验等高级技巧。

weixin_42525005的博客 449

Oracle MCP Server实战:自然语言如何重塑数据库交互体验

本文深入探讨了Oracle MCP Server如何通过自然语言交互技术革新数据库操作体验。作为Oracle数据库的革命性工具,MCP Server集成了先进的Text-to-SQL技术,允许用户使用自然语言直接查询数据库,大幅降低使用门槛。文章详细介绍了从环境搭建、实战案例到企业级部署的全流程,特别强调了中文自然语言处理能力和安全最佳实践,为DBA和开发者提供了从传统SQL到智能交互的转型指南。

u9v0w的博客 283

Python应用开发——爬取网页图片

当我们需要从网页上面下载很多图片的时候,一个一个手动保存实在是太累人了。那么有没有批量下载的办法呢? 答案是有的,Python爬虫就可以完美的做到这一点,而且作为一个Python的初学者,我可以很负责任的告诉你,这门语言入门挺简单的,特别是对于那些有其他编程语言经验的人。

ShenZhen_zixian的博客 4万+

【C/C++ 性能优化】提高C++程序的缓存命中率以优化性能

在探讨计算机性能优化的旅程中,我们常常被引导去关注算法的复杂度、代码的优化,或是更高效的数据结构。然而,有一个经常被忽视的角色在幕后默默地影响着程序的运行效率——那就是缓存(Cache)。正如哲学家亨利·戴维·梭罗在《瓦尔登湖》中所说:“细节是造成美丽的源泉”,在软件开发的世界里,对缓存的理解和优化,就是那些决定程序性能优雅与否的细节。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 3735

Python爬虫实战(五):根据关键字爬取某度图片批量下载到本地(附上完整源码)

Python爬虫实战(五):根据关键字爬取某度图片批量下载到本地(附上完整源码)

努力让自己发光,对的人才能迎着光而来 14万+

深度解析:LPDDR5 Receiver 的挑战与应对

LPDDR5 的数据速率已经来到Tbit​DataRate1​≈156ps在6400Mbps时也就是说,。👉 这就是为什么成为 LPDDR5 的“标配”。

weixin_43199439的博客 211

EMC辐射整改常用的4种整改方法

例如,产品设计研发工程师们根据需求,设计出效果良好的滤波电路,置入产品I/O(输入/输出)接口的前级,可使因传导而进入系统的干扰噪声消除在电路系统的入口处;通过选择元器件和合理安排的电路系统,使干扰的影响减少。有些频率点是通过电路板上走线分布参数所决定的,通过前述方法不大有用,此类整改通过在走线中增加小的电感、电容、磁珠来改变电路参数结构,使其移到限值要求较高的频率点上。电线电缆的分类整理在电子设备中,线间耦合是一种重要的途径,也是造成干扰的重要原因,因为频率的因素,可大体分为高频耦合与低频耦合。

学海无涯的专栏 3122

Python爬虫:简易图片爬取

对该页面往下翻,并复制以下信息粘贴在header中(注:粘贴时优先打三对双引号注释后再粘贴,这样能够最高程度避免粘贴胡乱换行的情况)print("正在保存第" + str(pic_name))print("正在保存第" + str(pic_name))然后将代码整理好,再复制负载内容,粘贴进代码里(注:这里要删除没有内容的名称)page_num = input("请输入你要抓取的页数:")page_num = input("请输入你要抓取的页数:")fold_name = input("请输入图片名:")

qq_73980336的博客 3788

手把手教你学simulink(41.4)--逆变器电场景示例:基于Simulink的主从控制的多逆变器协同控制(Multi-Inverter Coordinated Control)

需求分析在现代电力系统中,分布式发电和储能系统的广泛应用使得多个逆变器并联运行成为常见的应用场景。为了确保多个逆变器之间的协同工作,实现系统的稳定性和高效性,通常采用主从控制(Master-Slave Control)策略。主从控制通过一个主控制器(Master)来协调多个从控制器(Slave),确保所有逆变器的输出电压、频率和功率分配符合预期目标。本项目将基于Simulink平台,开发一个多逆变器协同控制系统,采用主从控制策略,实现对多个逆变器的精确控制和优化。

MHD0815的博客 306

使用nodejs Crawler模块 爬取页面dom数据,图片和视频等详解

使用 nodejs Crawler模块 爬取页面数据1. 安装 crawler 模块2. 创建爬虫对象,开始爬取3. 爬取文件3.1 爬取页面结构dom树3.2 爬取页面的图片4. 爬取视频文件5. 总结 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 1. 安装 cra...

@必意玲 5229

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

探索darrenfantasy的Image Crawler:一款强大的图片抓取工具

探索darrenfantasy的Image Crawler:一款强大的图片抓取工具 项目简介 在今天的互联网世界中,图片是信息传播的重要载体,而Darrenfantasy的Image Crawler项目正是专为需要批量下载和管理网络图片的用户设计的。这个开源项目允许你通过简单的配置,自动化地从指定网站抓取并保存图片,极大地提高了效率。 技术分析 Image Crawler的核心是Python编程语...

gitblog_00095的博客 863

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

crawler4j爬虫--爬取技巧总结(鄙人之见)

阅读对象:有一定全文检索(最好会lucene)的理论和实践基础的同学。 对全文检索不是太了解的请参考我前几篇博客 首先,我想爬取图片,让自己的搜索 可以爬取图片,首先找一个图片网站我选取的一个网站是http://sc.chinaz.com/ 。为什么不选取百度图片或者相约久久,因为这两个网站 的html太复杂了。因此选择这个网站进行全站爬取。 环境:firefox(firebug插

落叶翩翩的优快云博客 5910

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

3分钟上手GPT-Crawler批量爬取:Sitemap自动解析全攻略

你还在手动收集URL构建知识库?面对成百上千个页面链接时,逐个复制粘贴不仅耗时,还容易遗漏重要内容。本文将带你掌握GPT-Crawler的Sitemap解析功能,通过简单配置即可实现批量URL自动爬取,让自定义GPT知识库的构建效率提升10倍。读完本文你将学会: - 3步完成Sitemap爬取配置 - 可视化理解爬取全流程 - 容器化部署实现一键启动 - 解决90%的常见爬取故障 ...

gitblog_00769的博客 1011

如何利用GPT-Crawler挖掘数据价值:从网站爬取到智能分析的完整指南

GPT-Crawler是一款强大的开源工具,能够从指定URL爬取网站数据并生成知识文件,帮助你轻松创建自定义GPT模型。无论是内容聚合、市场调研还是AI训练数据准备,这款工具都能提供高效解决方案。 ## 🚀 为什么选择GPT-Crawler? 在信息爆炸的时代,手动收集和整理网络数据既耗时又低效。GPT-Crawler通过自动化爬取流程,让你能够: - **快速获取结构化数据**:自动提取

gitblog_00916的博客 927

使用GPT-Crawler爬取Sitemap:批量URL处理方案

你是否还在为以下问题困扰? - 手动收集数百个URL构建知识库,重复劳动且易遗漏 - 通用爬虫无法识别Sitemap(XML Sitemap,网站地图)特殊格式 - 爬取过程中资源加载混乱导致效率低下 - 输出文件过大超出LLM处理限制 本文将系统讲解如何利用GPT-Crawler实现Sitemap自动解析与批量URL处理,通过5个实战步骤+3种进阶技巧,让你10分钟内完成原...

gitblog_00749的博客 988

Node.js爬取妹子图-crawler爬虫的使用

去年10月份写过《Node.js 2小时爬取驴妈妈8W+条旅游数据》。之前做的是使用request 做网路请求和 cheerio做DOM解析。 后来在网上看见了crawler,昨天就把crawler把玩了了一把。感觉使用起来还可以,他的作用和上面的两个包的作用是一样的。 这次我爬取的是妹子图。 在爬取之前,还是建议先看看crawler怎么使用。其实它的是有还是很简单的。这里不再赘述,请自...

小猿猪哥的博客 4538

【亲测免费】 探索快手世界的无限可能:kuaishou-crawler

在这个数字化时代,社交媒体已经成为我们生活的一部分。而快手,作为中国最受欢迎的短视频分享平台之一,承载着无数创意与故事。今天,我们要向您推荐一款强大的开源项目——kuaishou-crawler,它能帮助您方便地获取快手用户的作品,无论是图片还是视频。 ## 项目介绍 [kuaishou-crawler](https://github.com/oGsLP/kuaishou-crawler) 是...

gitblog_00063的博客 1万+

Jsoup,WebCollector和Crawler4j三种爬虫框架爬取京东商品数据测试

1.安装maven、jdk等,myeclipse配置好二者环境。 2.代码 (pom.xml和各个jd_element.java) 运行:右键jd_element.java->Run as->Java Application pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="

xiaoqiaoliushuiCC的博客 777

面向对象的分布式爬虫框架XXL-CRAWLER

《面向对象的分布式爬虫框架XXL-CRAWLER》 一、简介1.1 概述XXL-CRAWLER 是一个灵活高效、面向对象的分布式爬虫框架。一行代码开发一个分布式爬虫;1.2 特性 1、面向对象:通过VO对象描述页面信息,提供注解方便的映射页面数据,爬取结果主动封装Java对象返回; 2、多线程; 3、扩散全站:将会以现有URL为起点扩散爬取整站; 4、去重:防止重复爬取; 5、URL白名单:...

许雪里 1218

chats-crawler:论坛对话数据爬取和解析,直接用于大模型指令微调

Discourse 类型论坛网站的对话数据爬取和解析,以直接用于大型语言模型(LLM)指令微调。数据包括文本、图片(多模态指令微调)和链接。不久将支持更多聊天对话网站。

qq_36402343的博客 789

远程文件系统索引新方案:FS Crawler SSH/FTP爬取功能实战指南

FS Crawler是一款强大的Elasticsearch文件系统爬虫工具,它能够轻松架起本地文件系统与Elasticsearch之间的桥梁,实现文件内容的高效索引与搜索。本文将重点介绍如何利用FS Crawler的SSH和FTP爬取功能,帮助你快速实现远程文件系统的索引,让文件搜索变得简单高效。 ## FS Crawler工作原理:轻松连接文件系统与Elasticsearch FS Craw

gitblog_00402的博客 575

唯一图库爬取图片

项目一:唯一图库 项目概述:根据需要到唯一图库爬取图片 所用技术:scrapy,urllib,字符串处理,百分号格式化 爬虫程序根据setting和item配置把爬取到的数据交给pipline处理 相关操作记录如下: 爬虫程序 1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 #s1.py 4 import s...

weixin_34133829的博客 4062
上一篇: 通过回调函数实现万年历打印
下一篇: 爬取数据并写入MySQL数据库
continue_v
博客等级 码龄5年 17粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值