在做项目时候遇到一个需求,后台添加微信公众号上面的文章时候能自动获取到这篇文章的标题、发布时间、封面图片,这样就不用手动去添加太多的信息,只需要一个url就够了。所以用jsoup做了一个简单的爬虫,根据文章的url获取这些信息。

原理

封面图片:
随便选择一个微信公众号,例如:

如图上所示就是文章的封面图片,这些封面图片大多在原文里是有的。但是,像上面这两篇文章,原文里是没有封面图的。但是在文章源码下面的script里藏着封面图片的url:

而且“msg_cdn_url"是唯一字符串,所以,获取封面图片就是要定位到“msg_cdn_url"就可以了。代码见后面。

文章发表时间:
点开文章进去是没有发表时间的,其实是隐藏在这图上这里,点一下就会变成年月日,所以无法直接通过页面定位到这里获取时间。


但是既然点一下就能变成时间那说明时间是有的,只是在script里面,接下来就可以在源码里用crtl+F查找时间“2020-04-28”,定位到时间所在的script位置。

经过观察可以发现这里其实没法直接定位,所以得用点间接方法。循环遍历所有的script标签,查看里面是否包含字符串"document.getElementById(“publish_time”)",如果有,则在这个script里定位到“s="”,这样就找到了时间的位置。
其他像“作者”、“标题”那些比较简单,直接见代码

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;public class HandleUrl {//获取文章封面图片public static String getCoverUrl(String informationUrl) throws IOException {String picUrl = null;int flag;Document doc = Jsoup.connect(informationUrl).timeout(3000).get();String htmlString=doc.toString();flag=htmlString.indexOf("msg_cdn_url");while(htmlString.charAt(flag)!='\"'){flag++;}int beginIndex=++flag;while(htmlString.charAt(flag)!='\"')flag++;int endIndex=--flag;picUrl=htmlString.substring(beginIndex,endIndex);return picUrl;}//获取文章作者public static String getAuthor(String informationUrl) throws IOException {Document doc = Jsoup.connect(informationUrl).timeout(3000).get();Element authors = doc.getElementById("js_name");String author = authors.text();return author;}//获取文章时间public static String getTime(String informationUrl) throws IOException {String time=null;Document doc = Jsoup.connect(informationUrl).timeout(3000).get();Elements scripts = doc.select("script");for (Element script : scripts) {String html = script.html();if (html.contains("document.getElementById(\"publish_time\")")) {int fromIndex = html.indexOf("s=\"");time=html.substring(fromIndex+3,fromIndex+13);return time;}}return time;}//获取文章标题public static String getTitle(String informationUrl) throws IOException {Document doc = Jsoup.connect(informationUrl).timeout(3000).get();Elements titles = doc.getElementsByClass("rich_media_title");String title = titles.text();return title;}public static void main(String[] args) throws IOException {String url="https://mp.weixin.qq.com/s/gcG6PnYwJUDabdYYe_snYw";System.out.println(getTime(url));System.out.println(getTitle(url));System.out.println(getAuthor(url));}
}

jsoup微信公众号文章标题、发布时间、作者、封面图片的爬取相关推荐

  1. 最新微信公众号文章采集发布到destoon网站,免费教程!

    DESTOON B2B网站管理系统是一套基于PHP+MySQL的开源B2B电子商务行业门户网站解决方案,当前已发布会员.分站.商城.供应.求购.行情.公司.展会.文章.信息.品牌.团购.图库.专题.视 ...

  2. 如何爬取微信公众号文章(二)

    在如何爬取微信公众号(一)中完成了将爬取公众号文章的元数据存入数据库,其中包括文章的连接.标题.发布时间.摘要和封面图片等信息.下面介绍如何根据文章链接来爬取文章内容. 开发环境 windows 7 ...

  3. Python批量爬取微信公众号文章中的图片重建PowerPoint文件

    开学第一课:一定不要这样问老师Python问题 董付国老师Python系列教材推荐与选用参考 3000道Python习题免费在线练习 ============= 版权声明:由于公众号后台规则问题,本文 ...

  4. 微信公众号文章采集获取方案附接口说明-文章阅读点赞在看数获取工具接口

    更多方案详细分析流程和接口说明地址:根据文章链接获取点赞阅读 | 全网公号数据 搜狗微信采集 注意:此方法列表内容已经采集不到了,可用性基本不高,只能作为补充使用(一般没人使用) 在网上可以找到很多针 ...

  5. 何如捕捉微信公众号文章 标题图

    何如捕捉微信公众号文章 标题图 在浏览器控制台 F12 Elements 查找JavaScript文件 从下往上数10个 就是存放标题及图片的文件,喜欢图的可以直接浏览器打开下载 效果图

  6. Python爬取微信公众号文章、标题、文章地址

    前言 本文的文字及图片过滤网络,可以学习,交流使用,不具有vb.net教程任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等c#教程案例教程视频免费在线观看 htt ...

  7. python 公众号文章发布_Python 抓取微信公众号文章

    版权声明:此文章转载自 Yushneng PyHub 如需转载请联系听云College团队成员阮小乙,邮箱:ruanqy#tingyun.com 微信公众号的文章链接有些是具有时效性的,过一段时间会变 ...

  8. 微信公众号教程-注册发布文章

    用博文来说,不便理解,直接上教学视频! 视频地址:微信公众号教程-注册发布文章

  9. python 公众号文章发布_python如何导出微信公众号文章方法详解

    1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...

最新文章

  1. linux+Qt 下利用D-Bus进行进程间高效通信的三种方式
  2. cocos 发布android 返回值2,cocos android编译出错
  3. python叫什么-Python为什么叫爬虫?Python与爬虫有什么关系?
  4. CTFshow php特性 web96
  5. 你真的理解零拷贝吗?
  6. Linux下文件权限查看并使用chomd修改文件权限
  7. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.69. Vim-7.4...
  8. 推销计算机英语作文,如何自我推销英语作文
  9. Spring Boot源码:SpringBootExceptionReporter
  10. 计算机网络的DIX,《计算机网络》期末考试试卷(B卷)
  11. 创建Oracle本地数据库详细步骤
  12. php提交表单怎么验证必填,PHP 表单验证 - 必填字段
  13. 苹果手机计算机怎么放桌面,苹果手机桌面图标怎么随意摆放 iPhone桌面图标随意摆放教程 (全文)...
  14. 第一讲 数系发展史纲
  15. Hive数据分析案例
  16. Windows Project2016如何增加加班工时。
  17. 渗透测试原理与基本进程
  18. 项目实战-基于redis的内存数据库Medis(附源代码以及测试用例)
  19. 微信小程序跳转第三方H5的方法
  20. tf-faster-rcnn训练报错: Loaded runtime CuDNN library: 7.0.5 but source was compiled with: 7.1.4.r-rcn

热门文章

  1. EXCEL查找函数之VLOOKUP,LOOKUP,HLOOKUP
  2. java切面编程 切面概念,面向切面编程(AOP)初探
  3. iOS 监控体系之电池状态监控【电池的状态处理:电池状态获取及监测、电池电量获取及监测、低电量模式切换监测】应用场景:ASO机刷的场景就需要保证设备的高可用性(UIDeviceBattery)
  4. vue鼠标停留在表格table2秒后,显示悬浮快(计算模块)
  5. Netty网络聊天(一) 聊天室实战
  6. python爬取b站用户_python爬取b站排行榜
  7. LockSurport中park()、unpark()和Thread中interrupt()的区别与联系
  8. jQuery[详解]+小案例
  9. 如何保护swf文件不被反编译软件破解?
  10. 趣学算法系列-回溯法