在做项目时候遇到一个需求,后台添加微信公众号上面的文章时候能自动获取到这篇文章的标题、发布时间、封面图片,这样就不用手动去添加太多的信息,只需要一个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