和别人聊天表情包太少怎么办,一直这样

今天就用java爬点表情包

上代码
我是用的springboot项目 引入jar包方便

pom文件
<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.3</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.58</version>
</dependency>
<dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version>
</dependency>
主方法
public static void main(String[] args) throws Exception {createFolder("D:\\wangyou_meme\\hotmeme");for (int i = 0; i < 200; i++) {int finalI = i;String path = "https://www.fabiaoqing.com/biaoqing/lists/page/"+ finalI +".html";String serchPersion = getSerchPersion(path);Document parse = Jsoup.parse(serchPersion);Element imghover = parse.getElementsByClass("imghover").first();Elements tagbqppdiv = imghover.getElementsByClass("tagbqppdiv");for (int j = 0; j < tagbqppdiv.size(); j++) {Element row = tagbqppdiv.get(j);String imgUrl = row.getElementsByTag("img").first().attr("data-original");String suffix = imgUrl.substring(imgUrl.lastIndexOf("."), imgUrl.length());String filename = row.getElementsByTag("a").first().attr("title");String regEx="[.<>/??:*/]";Pattern p   =   Pattern.compile(regEx);Matcher m   =   p.matcher(filename);filename = m.replaceAll("").trim();try {download(imgUrl,"hotmeme\\"+filename + suffix);} catch (Exception e) {System.out.println("保存失败");}}}}
httpget方法
public static String getSerchPersion(String url) {HttpClient httpClient = new HttpClient();httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF8");//设置 HttpClient 接收 Cookie,用与浏览器一样的策略httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);//让服务器知道访问源为浏览器httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT, "Mozilla/5.0 (Windows NT 6.1; rv:8.0.1) Gecko/20100101 Firefox/8.0.1");// 设置 Http 连接超时为5秒httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);/* 2 生成 GetMethod 对象并设置参数 */GetMethod getMethod = new GetMethod(url);// 设置 get 请求超时为 5 秒getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);// 设置请求重试处理,用的是默认的重试处理:请求三次getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());String response = "";try {int statusCode = httpClient.executeMethod(getMethod);byte[] responseBody = getMethod.getResponseBody();// 读取为字节数组response = new String(responseBody);} catch (HttpException e) {System.out.println("请检查输入的URL!");} catch (IOException e) {System.out.println("发生网络异常!");} finally {/* 6 .释放连接 */getMethod.releaseConnection();}return response;}
下载图片方法,表情包保存在D:\\wangyou_meme下
   public static void download(String urlString, String filenames) throws Exception {URL url = new URL(urlString);URLConnection con = url.openConnection();InputStream is = con.getInputStream();byte[] bs = new byte[1024];int len;String filename = "D:\\wangyou_meme\\" + filenames;  //下载路径及下载图片名称File file = new File(filename);if(file.exists()){return;}FileOutputStream os = new FileOutputStream(file, true);while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}// 完毕,关闭所有链接os.close();is.close();}public static void createFolder(String folder){File file = new File(folder);if(!file.exists()){//如果文件夹不存在file.mkdirs();//创建文件夹}}


以上就是全部代码,运行main方法发现下载的好慢,那就改造一下加入线程

下边是改造后的main方法

public static void main(String[] args) throws Exception {createFolder("D:\\wangyou_meme\\hotmeme");//这里线程池不要设置太大,要不请求时会丢ExecutorService exec = Executors.newFixedThreadPool(5);for (int i = 0; i < 200; i++) {int finalI = i;exec.execute(()->{String path = "https://www.fabiaoqing.com/biaoqing/lists/page/"+ finalI +".html";String serchPersion = getSerchPersion(path);Document parse = Jsoup.parse(serchPersion);Element imghover = parse.getElementsByClass("imghover").first();Elements tagbqppdiv = imghover.getElementsByClass("tagbqppdiv");for (int j = 0; j < tagbqppdiv.size(); j++) {Element row = tagbqppdiv.get(j);String imgUrl = row.getElementsByTag("img").first().attr("data-original");String suffix = imgUrl.substring(imgUrl.lastIndexOf("."), imgUrl.length());String filename = row.getElementsByTag("a").first().attr("title");String regEx="[.<>/??:*/]";Pattern p   =   Pattern.compile(regEx);Matcher m   =   p.matcher(filename);filename = m.replaceAll("").trim();try {download(imgUrl,"hotmeme\\"+filename + suffix);} catch (Exception e) {System.out.println("保存失败");}}});}exec.shutdown();}

速度快了几倍


嗯~真香
最后

java实现多线程爬取表情包相关推荐

  1. 利用多线程爬取表情包

    今天用python爬了一下表情包 首先,我们先导入一些所需的包 #系统包 import os#时间包 from time import time# 爬虫包 import lxml as lxml im ...

  2. Python多线程爬取表情包,代码都放在最后了

    文章目录 一.写在前面 二.步骤解析 三.效果展示 一.写在前面 从老马的两大聊天软件,到其它的各种软件,表情包一直都是中国互联网用户的「心头好」,时至今日,表情包已然成为必不可少的聊天方式. 无论是 ...

  3. 2020/4/11 斗图啦多线程爬取表情包

    [斗图啦多线程爬虫思路] 网站:https://www.doutula.com/photo/list/?page=1 爬取的是最新的表情包这个页面的图片 思路 1.分析需求,创建解析线程和下载线程 因 ...

  4. Python多线程爬取表情包,1秒下载五十张表情包!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:私信博主01  领取此项目完整代码! Python学习资料免费领取 从 ...

  5. Python多线程爬取表情包,1秒下载五十张表情包

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 pyt ...

  6. Python爬虫入门教程09:多线程爬取表情包图片

    前言

  7. 我是斗图王之python爬取表情包

    最近在群里看到好多人在斗图,各式各样的,可是自己收藏里面却没有几个,于是就想着去网上找点资源.为了当上斗图王,就百度了些python教程,看着视频敲了些代码. 代码就不讲解了,因为毕竟是看着视频搞得, ...

  8. python表情包语言_我是斗图王之python爬取表情包

    [Python] 纯文本查看 复制代码# -*- coding: utf-8 -*- ''' #intent : #Author :Michael Jack hu #start date : 2019 ...

  9. Node爬虫(二):使用cheerio爬取表情包

    cheerio 官方在线文档 简介 cheerio是nodejs的抓取页面模块,为服务器特别定制的,快速.灵活.实施的jQuery核心实现.适合各种Web爬虫程序 安装 npm install che ...

最新文章

  1. 抛弃P值,选择更直观的A/B测试!
  2. swift的基础语法(二)
  3. IPMI远程管理一点记录
  4. ubuntu源列表(清华,阿里,官方,选一即可)
  5. 漫步数学分析六——聚点
  6. 【ElasticSearch】Es 源码之 IndicesModule 源码解读
  7. 自己编写的仿京东移动端的省市联动选择JQuery插件
  8. 前车之鉴-web2.0网站架构失败案例与解决方案
  9. python获取局域网通过guest开放的软件_python构建SSH僵尸网络
  10. 神技能!在上司靠近座位时,用人脸识别技术及时屏幕切换
  11. 管家婆服装.NET II TOP V6.5-采购入库单(一)
  12. 谈谈教学视频加密、防录屏的方法
  13. html 倒计时 插件,jQuery倒计时插件leftTime.js
  14. 坚持学下去!转行程序员的2020年度总结
  15. prometheus的remote write功能
  16. python web py入门-7-响应处理(下)
  17. 编码解码--url编码解码
  18. Steam帝国时代3完全版,每次启动UAC
  19. Echart柱状图中数据显示在图上方
  20. 计算机串行总线控制器,通用串行总线控制器出现叹号是什么情况?怎么解决?...

热门文章

  1. macos配置ssh别名登陆并免密登录
  2. jfreechart 备份文件
  3. 【无标题】chatGPT--白话文教你读懂chatGPT
  4. 【Python基础】网络编程之IP地址
  5. linux 服务器 告警声,服务器登录报警脚本
  6. Jetty、Netty、Tomcat、Undertow
  7. 无聊写个JFrame开发摸鱼提醒小玩意儿
  8. 线性代数的本质(1)——基底、向量、线性变换、逆阵、行列式
  9. 联想台式电脑开机时不显示主板logo直接黑屏进入锁屏界面因此无法进入bios模式解决方法
  10. 第四章、连上 Internet