第一步先爬取文章

第二步将原本的微信图片,下载到本地替换到七牛云上面

  <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5.12</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version></dependency><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version></dependency>
public class SpiderUtil {// 微信公众号文章域名private static final String WX_DOMAIN = "https://mp.weixin.qq.com";/*** 测试主方法*/public static void main(String args[]) {String url = "https://mp.weixin.qq.com/s/Cw-QuhaqruojDQM-Ttvjzg";String resp = getActicle(url);System.out.println(resp);}public static String getActicle(String url) {// 检测链接是否合法String msg = checkUrl(url);if (msg != null) {return msg;}// 请求与响应String resp = HttpTool.get(url, getWxHeaderMap());String content = getWxActicleContent(resp);if (resp == null || resp.trim().length() == 0) {return "文章获取失败,请检查链接是否正确";}return content;}/*** 检测文章链接是否合法*/public static String checkUrl(String url) {if (url == null) {return "请输入文章链接";}if (!url.startsWith(WX_DOMAIN)) {return "请输入微信公众号文章链接";}return null;}public static String getWxActicleContent(String resp) {try {Element document = Jsoup.parse(resp);Elements pngs = document.select("img[data-src]");for (Element element : pngs) {String imgUrl = element.attr("data-src");String newsrc = DownLoadImg.downloadPicture(imgUrl);element.attr("src", newsrc);}return document.toString();} catch (Exception e) {return "";}}/*** 微信公众号请求头设置*/public static Map<String, String> getWxHeaderMap() {Map<String, String> map = new HashMap<>(new LinkedHashMap<>());map.put("Accept", "text/html, application/xhtml+xml, image/jxr, */*");map.put("Accept-Encoding", "gzip, deflate");map.put("Accept-Language", "zh-Hans-CN, zh-Hans; q=0.8, en-US; q=0.5, en; q=0.3");map.put("Host", "mp.weixin.qq.com");map.put("If-Modified-Since", "Sat, 04 Jan 2020 12:23:43 GMT");map.put("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko");return map;}}
public class DownLoadImg {public static String downloadPicture(String urlList) {String filename = UUID.fastUUID().toString();String path = "D:/m2/" + filename;URL url = null;String uploadUrl = null;try {url = new URL(urlList);DataInputStream dataInputStream = new DataInputStream(url.openStream());FileOutputStream fileOutputStream = new FileOutputStream(new File(path));ByteArrayOutputStream output = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int length;while ((length = dataInputStream.read(buffer)) > 0) {output.write(buffer, 0, length);}BASE64Encoder encoder = new BASE64Encoder();String encode = encoder.encode(buffer);byte[] content = output.toByteArray();uploadUrl = new QiNiuUploadUtil().upload(content, filename, true);fileOutputStream.write(content);dataInputStream.close();fileOutputStream.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}System.out.println("Download返回的filname=" + uploadUrl);return uploadUrl;}public static void main(String[] args) {String picture = downloadPicture("https://mmbiz.qpic.cn/mmbiz_png/7WbP8ZjskNqv1Wyx18gicMDiciaibkbZic6q3HqhSAdvrFEmAsg65cmE51rrsumhS6DK0f1ibHKHKEPibO6TbibK0gZ4GQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1");System.out.println(picture);}}

Java 爬虫微信公众号详情,并且破解微信图片跨域问题相关推荐

  1. php 微信授权 跨域,微信公众号支付 请求跳转code跨域

    1.开发微信商城公众号支付,前端发起ajax请求到服务器初始化订单.之后由服务器获取openid之后发起支付.在获取openid的第一步出现跨域异常.一下是部分代码: header('Access-C ...

  2. Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理

    在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这 ...

  3. 微信公众号H5页面开发--微信JS-SDK引用

    微信公众号H5页面开发–微信JS-SDK引用 微信提供了微信公众号开发者手册,官方地址:https://mp.weixin.qq.com/ 公众号内许多复杂的业务场景,都是通过网页形式来提供服务,这时 ...

  4. 如何开发微信公众号以及如何运营微信公众号

    微信公众号已经成为了企业.个人和组织进行品牌推广.宣传和营销的重要平台.但是,如何开发和运营微信公众号并不是一件容易的事情.本文将从以下几个方面来介绍如何开发和运营微信公众号. 一.微信公众号的开发 ...

  5. 微信公众号数据2019_历史微信公众号排名,微信公众号新榜排名

    历史微信公众号排名,微信公众号新榜排名 公众号排名优化的注意事项及细节今天给大家分享一下,作为微信公众号的排名优化对于大多数人来说都已经知道了有这个渠道的事情,其实很多的新产品及渠道出来以后有不少的人 ...

  6. php公众号提现功能,微信公众号打赏的钱怎么提现_微信公众号打赏功能_微信公众号打赏从哪里取出来...

    微信公众号打赏的钱怎么提现,微信公众号打赏功能.微信公众号之前打赏功能可以立即取现,但是最近出现了一些变动,会有人问微信公众号打赏为什么不能立刻取现?小编为大家带来了微信公众号打赏取现时间调整. 微信 ...

  7. 微信公众号开发者自动回复php,微信公众平台开发者模式的启用并自动回复

    这篇文章介绍的内容是关于微信公众平台开发者模式的启用并自动回复,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 首先,什么是开发者模式? 开发者模式,就是先验证你的服务器地址,验证完成之 ...

  8. 爬取微信公众号详情页

    需求 :爬取一个微信公众号,获取文章里面的图片并把它下载到本地,上传到阿里云,修改原文章的图片地址 import requests import re import os import json im ...

  9. java微信公众号支付退款_java 微信公众号支付 详细教程【站长吐血整理】

    maven或者gradle 项目记得引用第三方开放的sdk工具类,微信支付的,很全 微信开发者第三方sdk库资料:weixin-popular compile group: 'com.github.w ...

最新文章

  1. MongoDB 文件(MongoDB fs)
  2. redis搭建与安装2
  3. wd2003计算机考试,2015计算机一级MsOffice练习:Word2003
  4. 关于答题抢票活动中奖率低的说明 |程序员光荣日
  5. exists的用法 python_5 年 Python ,总结的 10 条 Python 使用技巧
  6. AngularJS分层开发
  7. 使用 Angular Universal 实现服务器端渲染
  8. api查询所有记录 zabbix_通过Zabbix API获取历史监控数据
  9. java.lang.OutOfMemoryError内存溢出定位
  10. Http请求头+请求方式+状态码
  11. 对接支付宝遇到的坑sign check fail: check Sign and Data Fail
  12. XPS文件转换器Speedpdf——XPS转PDF免费工具
  13. Linux性能优化(十三)——CPU性能测试
  14. win10 系统下CAD2009缩放卡顿问题解决
  15. 阿里云服务器实例规格型号、功能、型号级别介绍及选择
  16. android 11.0禁用电源键(屏蔽关机短按长按事件)
  17. JavaWEB(applicationjavabean封装)
  18. CSS系列之浮动详解
  19. jenkins插件管理提示_jenkins插件管理及安装
  20. excel中多列内容显示不全

热门文章

  1. jq jqprint 设置页脚_jQuery 插件 jqprint 实现浏览器页面打印和设置页眉页脚
  2. 山东大学人工智能专业认知科学与类脑计算回忆版
  3. 阿里云短信api发送异常
  4. 错误 1error LNK1207 PDB 格式不兼容;请删除并重新生成
  5. fatal error LNK1104:
  6. webstorm注册码 破解,长期有效
  7. 2023年JAVA JDK8的安装与配置(附JAVA8安装包)
  8. Python编程入门之Arcade游戏编程(一)
  9. 【项目重构】总结与反思
  10. java中的math.abs_java – Math.abs(a – b)的更快实现 – Math.abs(c – d)?