Java代码下载(IDEA)

Maven引入

<dependency>

<groupId>org.apache.httpcomponents</groupId>

<artifactId>httpclient</artifactId>

<version>4.5.13</version>

</dependency>

<dependency>

<groupId>org.jsoup</groupId>

<artifactId>jsoup</artifactId>

<version>1.13.1</version>

</dependency>

写在application.properties配置文件中upload.path=G:/imgs
getUrl=https://mp.weixin.qq.com/s/fdllA87IDpUZ34OFBVZdWw
wexinUrl=https://mp.weixin.qq.com
定义Controller@RestController
@RequestMapping("/crawler")
public class CrawlerController {//存储图片的路径,写在配置文件里面@Value("${upload.path}")private String path;//公众号文章地址,写在配置文件里面@Value("${getUrl}")private String url;//公众号总地址@Value("${wexinUrl}")private String wexinUrl;@RequestMapping("/getContent")public String getContent() {String content = null;String imgDir = path;//      输入网址,创建发起Get请求的对象HttpGet httpGet = new HttpGet(url);//      创建httpClient对象,类似于打开浏览器CloseableHttpClient httpClient = HttpClients.createDefault();//      类似于浏览器输入网址后,按回车CloseableHttpResponse execute = null;try {execute = httpClient.execute(httpGet);//      解析获取数据,判断状态码是不是200if (execute.getStatusLine().getStatusCode() == 200) {HttpEntity entity = execute.getEntity();content = EntityUtils.toString(entity, "utf8");Document doc = Jsoup.parse(content);//找到图片标签Elements img = doc.select("img");for (int i = 0; i < img.size(); i++) {// 图片地址String imgUrl = img.get(i).attr("data-src");File sf = new File(imgDir);if (!sf.exists()) {sf.mkdirs();}
//                    这里是一个公众号的二维码的图片,先不处理了
//                    String id = img.get(i).attr("id");
//                    if ("js_pc_qr_code_img".equalsIgnoreCase(id)) {
//                        imgUrl = wexinUrl + img.get(i).attr("src");
//                    }if (imgUrl != null && !imgUrl.equals("")) {String fileName = DateTimeUitls.getString("yyyyMMddHHmmssSS") + ".png";String imgPath = imgDir + File.separator + fileName;File imgFile = new File(imgPath);if (!imgFile.exists()) {// 下载图片// 构造URLURL url = new URL(imgUrl);// 打开连接URLConnection con = url.openConnection();//设置请求超时为5scon.setConnectTimeout(5 * 1000);// 输入流InputStream in = con.getInputStream();// 1K的数据缓冲byte[] bs = new byte[1024];// 读取到的数据长度int len;// 输出的文件流OutputStream os = new FileOutputStream(imgPath);// 开始读取while ((len = in.read(bs)) != -1) {os.write(bs, 0, len);}os.close();in.close();}//重新赋值为本地路径,
//                        img.get(i).attr("data-src", imgPath);
//                        img.get(i).attr("src", imgPath);//上面访问图片可能访问不到,建议定义访问图片的请求方法,所以修改成下面的的路径访问方式img.get(i).attr("data-src", "/crawler/readImg/" + fileName);img.get(i).attr("src", "/crawler/readImg/" + fileName);//导出 htmlcontent = doc.outerHtml();}}}} catch (Exception e) {e.printStackTrace();} finally {try {execute.close();} catch (IOException e) {e.printStackTrace();}try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}return content;}//建议定义访问图片的请求方法@RequestMapping("/readImg/{fileName}")public void readImg(@PathVariable("fileName") String fileName, HttpServletResponse response) {try {// fileImage 为服务器存储的实际路径 如 c:\aa\bb.jpgString fileImage = path + File.separator + fileName;FileInputStream hFile = new FileInputStream(fileImage); // 以byte流的方式打开文件int i = hFile.available(); // 得到文件大小byte data[] = new byte[i];hFile.read(data); // 读数据hFile.close();response.setContentType("image/*"); // 设置返回的文件类型OutputStream toClient = response.getOutputStream(); // 得到向客户端输出二进制数据的对象toClient.write(data); // 输出数据toClient.close();} catch (IOException e) {// 错误处理PrintWriter toClient;try {// 得到向客户端输出文本的对象toClient = response.getWriter();response.setContentType("text/html;charset=utf8");toClient.write("无法打开图片!");toClient.close();} catch (IOException e1) {e1.printStackTrace();}}}
}

时间格式工具类

public class DateTimeUitls {public static String getString(String pattern){SimpleDateFormat df = new SimpleDateFormat(pattern);return df.format(new Date());}
}

爬取公众号的文章,同时处理图片不显示问题(JAVA)相关推荐

  1. python爬取公众号历史文章

    文章来源 学习网上以及自己修改. 参考链接: https://blog.csdn.net/d1240673769/article/details/75907152 目的 ''' 爬取公众号的历史文章信 ...

  2. python爬取公众号历史文章_Python爬虫爬取微信公众号历史文章全部链接

    因为朋友问我能不能找一下一个微信公众号的全部历史文章的链接,我就帮他弄了一下,通过百度和谷歌发现现在大家爬微信公众号的思路基本都是下面两种: 通过搜狗搜索微信公众号然后拿到链接 通过fiddler检测 ...

  3. python爬取公众号历史文章_pythons爬虫:抓取微信公众号 历史文章(selenium+phantomjs)...

    原标题:pythons爬虫:抓取微信公众号 历史文章(selenium+phantomjs) 大数据挖掘DT数据分析 公众号: datadw 本文爬虫代码可以通过回复本公众号关键字"公众号& ...

  4. Selenium自动化|爬取公众号全部文章,就是这么简单

    大家好,今天我们来讲点Selenium自动化,你是否有特别喜欢的公众号?你有思考过如何将一个公众号历史文章全部文章爬下来学习吗?现在我们以早起Python为例,使用Selenium来实现 下面就来详细 ...

  5. python爬取公众号历史文章_python3 scrapy爬取微信公众号及历史信息V1.0

    妹子图.png 环境:python3  scrapy 目的 写这篇文章主要是做一下纪念,毕竟是搞了快两天的东西了,今天加大了量,使用scrapy爬取100多个微信公众号,然后出现IP被封的情况下,当然 ...

  6. 爬取公众号全部文章,就是这么简单 |Selenium自动化

    Selenium介绍 Selenium 是一个用于web应用程序 自动化测试 的工具,直接运行在浏览器当中,可以通过代码控制与页面上元素进行交互,并获取对应的信息.Selenium 很大的一个优点是: ...

  7. python爬取公众号历史文章_python爬微信公众号前10篇历史文章(6)-话说http cookies...

    早期Web开发面临的最大问题之一是如何管理状态.简言之,服务器端没有办法知道两个请求是否来自于同一个浏览器.这是cookies的起源. 什么是cookie? A cookie is a small s ...

  8. python爬取公众号文章如何获取发布时间

    python爬取公众号文章如何获取发布时间 在上一篇爬取公众号的文章中爬虫如何爬取微信公众号文章介绍了如何获取公众号的所有历史文章链接,但当我根据链接去爬取文章的时候,却遇到了一个小问题,就是文章的发 ...

  9. python公众号推荐 知乎_爬取公众号及知乎专栏文章的标题链接的方法汇总

    记一次最近的工作内容(奇怪的任务增加了)因为Python是去年接触并且没有过爬虫的实际学习操作,所以在出现"要收集文章标题链接"的任务是还是有点难以下手的.虽然有了解过爬虫可以方便 ...

最新文章

  1. 纯 CSS 实现三角形尖角箭头的实例
  2. VTK:Utilities之Timer
  3. android 一个很漂亮的控件ObservableScrollView(含片段代码和源码)
  4. 开源免费的.NET图像即时处理的组件ImageProcessor
  5. celery异步执行任务在Django中的应用实例
  6. 交互键盘_如何仅为键盘交互添加聚焦环
  7. 白盒分析CC网络验证
  8. 天正双击墙体不能编辑_20个天正CAD常备技巧,助你神速绘图!
  9. 我的世界服务器显示伤害指令,我的世界指令代码大全
  10. LDR6023E-解决苹果PD 20W快充市场供不应求
  11. 梦幻西游动画效果展示
  12. 1 Framework inner error (expect END descriptor with depth 1 but get another
  13. 一年级上册计算机教学计划,一年级信息技术上册教学计划一年级信息技术教学计划...
  14. Redis从精通到入门——数据类型Zset实现源码详解
  15. 46_Pandas,Python,Seaborn热图的生成
  16. Java反射--藤原豆腐店自用
  17. Map之containsKey()
  18. int 类型 转 long的坑
  19. Google翻译API的使用
  20. 第六天----数据结构笔记

热门文章

  1. AS3多线程快速入门(三):NAPE物理引擎+Starling[译]
  2. 再来学习一下RT-Thread的软件架构 | 文末赠书5本《软件架构实践》
  3. 中国电信再发力:推出最新七大惠民惠企新举措
  4. ios绘图_使用Pencilkit轻松将绘图功能添加到ios应用
  5. 微信小程序:全新动态视频壁纸下载支持多种分类短视频另外也有静态壁纸
  6. 猎魂觉醒服务器界面不显示角色,猎魂觉醒新人常见问题集合 新人常见问题解决_3DM手游...
  7. iOS 实战开发课程笔记
  8. 2022出海拉美:巴西电商市场现状及网红营销特点
  9. 电商卖家们必须关注的几个数据
  10. Postgresql语句持续更新