轻松学会使用JSoup爬取微信公众号文章,实现高效获取信息!

您所在的位置:网站首页 优采云管理控制台要付费吗 轻松学会使用JSoup爬取微信公众号文章,实现高效获取信息!

轻松学会使用JSoup爬取微信公众号文章,实现高效获取信息!

2024-04-14 13:46| 来源: 网络整理| 查看: 265

  JSoup 是一款 Java 的 HTML 解析器,可以直接解析 HTML 和 XML 文档。在网络爬虫开发中,JSoup 的使用非常广泛。本文将以 JSoup 爬取微信公众号文章为例,详细介绍 JSoup 的使用方法。

  1.概述

  微信公众号是一个非常重要的社交媒体平台,对于企业和个人而言都有着重要的意义。但是,由于微信公众号的限制,我们只能在微信客户端内查看文章,并不能直接复制粘贴。如果想要获取某篇文章的全部内容,就需要借助爬虫技术来实现。

  2.获取文章链接

  首先,我们需要获取微信公众号文章的链接。这一步可以通过以下两种方式来实现:

  2.1手动获取

  我们可以在微信客户端打开某篇文章,在“分享”中选择“复制链接”,然后将链接粘贴到浏览器中打开。

  2.2自动获取

  我们可以通过模拟登陆微信公众平台,并从历史消息中获取所有文章链接。这种方式需要用到 Selenium 等工具,不过本文不做过多讲解。

  3.解析 HTML

  

  无论是手动获取还是自动获取文章链接,我们都需要对网页进行解析。这里我们使用 JSoup 来解析 HTML。

  代码如下:

  

Document doc = Jsoup.connect(url).get();

  其中,`url`是文章链接,`doc`是解析后的文档对象。我们可以通过`doc`对象来获取文章标题、发布时间、正文等信息。

  4.获取文章标题

  获取文章标题非常简单,只需要使用以下代码即可:

  

String title = doc.select(;h2.rich_media_title;).text();

  5.获取发布时间

  获取发布时间也很简单,只需要使用以下代码即可:

  

  

String date = doc.select(;em#post-date;).text();

  6.获取正文

  获取正文是本文的重点,我们需要用到 JSoup 的一些高级选择器。具体步骤如下:

  6.1删除无关元素

  首先,我们需要删除一些无关元素,比如广告、二维码等。我们可以通过以下代码来实现:

  

doc.select(;div#js_content div.qq_map;).remove();//删除地图

doc.select(;div#js_content #js_pay_area;).remove();//删除付费区域

doc.select(;div#js_content #js_sg_bar;).remove();//删除分享栏

doc.select(;div#js_content .qr_code_pc_outer;).remove();//删除二维码

doc.select(;div#js_content #js_toobar3;).remove();//删除推荐栏

  6.2处理图片

  接下来,我们需要处理文章中的图片。由于微信公众号的图片都是经过加密处理的,因此我们需要对图片链接进行解密。具体步骤如下:

  

Elements imgs = doc.select(;div#js_content img[data-src];);

for (Element img : imgs){

String imgSrc = img.attr(;data-src;);

if (imgSrc.startsWith(;//;)){

imgSrc =;https:;+ imgSrc;

}

String imgUrl = Jsoup.connect(imgSrc).ignoreContentType(true).execute().url().toString();

img.attr(;src;, imgUrl);

img.removeAttr(;data-src;);

}

  

  6.3处理视频

  如果文章中包含视频,我们也需要对视频链接进行解密。这里我们需要用到微信公众平台的 API,具体步骤如下:

  

Elements videos = doc.select(;div#js_content iframe[src^='https://mp.weixin.qq.com/mp/videoplayer'];);

for (Element video : videos){

String vid = video.attr(;data-vid;);

String url =;https://mp.weixin.qq.com/mp/videoplayer?action=get_mp_video_play_url;preview=0;__biz=;+ biz +;;mid=;+ mid +;;idx=;+ idx +;;vid=;+ vid +;;uin=;key=;pass_ticket=;wxtoken=;appmsg_token=;x5=1;f=json;;

String result = Jsoup.connect(url).ignoreContentType(true).execute().body();

JSONObject json = new JSONObject(result);

String playUrl = json.getString(;url_info;).replaceAll(;\\\\;,;;);

video.attr(;src;, playUrl);

}

  其中,`biz`、`mid`和`idx`分别是公众号的一些参数,可以从文章链接中解析出来。

  6.4获取正文内容

  经过前面的处理后,我们就可以直接获取正文内容了。具体步骤如下:

  

StringBuffer sb = new StringBuffer();

Elements elements = doc.select(;div#js_content ;*;);

for (Element element : elements){

if (;section;.equals(element.tagName())){

sb.append(element.text()).append(;\n\n;);

} else if (;p;.equals(element.tagName())){

sb.append(element.text()).append(;\n\n;);

} else if (;img;.equals(element.tagName())){

sb.append(;;img src=\;;).append(element.attr(;src;)).append(;\;/;\n\n;);

} else if (;iframe;.equals(element.tagName())){

sb.append(;;iframe src=\;;).append(element.attr(;src;)).append(;\;;;/iframe;\n\n;);

}

}

String content = sb.toString();

  7.总结

  通过以上步骤,我们就可以使用 JSoup 来爬取微信公众号文章了。当然,由于微信公众平台的不断更新,以上代码可能会出现一些问题。但是,本文所介绍的方法和思路是通用的,只需要稍作调整即可适用于其他网站。

  8.优采云

  如果你想要拥有更好的 SEO 优化效果,可以尝试使用优采云。优采云是一款专业的 SEO 工具,可以帮助你分析关键词、优化标题和正文等内容,从而提高网站的排名。更多详情请访问 www.ucaiyun.com。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3