需求描述:参照图,1、2、3、4步骤!

https://weixin.sogou.com/weixin?type=1&s_from=input&query=36%E6%B0%AA&ie=utf8&_sug_=n&_sug_type_=

HttpTool工具类、Jsoup maven 依赖参见文章 https://blog.csdn.net/liyanlei5858/article/details/117450118

Jsoup 入门参考 https://www.cnblogs.com/zhangyinhua/p/8037599.html

1、获取SNUID ,目的是为了绕过搜狗的验证码页面

// 获取snuid (因为sunid有时间和访问次数限制建议每次自动查询数据时更新一次)

 public String getSnuid() {CloseableHttpClient httpClient = null;CookieStore cookieStore = null;String url = "https://www.sogou.com/web?query=333&_asf=www.sogou.com&_ast=1488955851&w=01019900&p=40040100&ie=utf8&from=index-nologin";int timeout = 30000;String snuid = null;try {cookieStore = new BasicCookieStore();HttpClientContext context = HttpClientContext.create();context.setCookieStore(cookieStore);RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build();httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).setDefaultCookieStore(cookieStore).build();HttpGet httpGet = new HttpGet(url);httpGet.setConfig(RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout).build());httpGet.setHeader("Cookie","ABTEST=0|1488956269|v17;IPLOC=CN3301;SUID=E9DA81B7290B940A0000000058BFAB6D;PHPSESSID=rfrcqafv5v74hbgpt98ah20vf3;SUIR=1488956269");httpClient.execute(httpGet);for (Cookie c : cookieStore.getCookies()) {if (c.getName().equals("SNUID")) {snuid = c.getValue();}}} catch (Exception e) {e.printStackTrace();}return snuid;}

2、抓取公众号搜索数据

https://weixin.sogou.com/weixin?type=1&s_from=input&query=36%E6%B0%AA&ie=utf8&_sug_=n&_sug_type_=

    @Testpublic void wechatLatestArticleLink() {//公众号名称String wechatName = "36氪";String url = "https://weixin.sogou.com/weixin?type=1&s_from=input&query={query}&ie=utf8&_sug_=n&_sug_type_=";
//        String url = "";Map<String, String> paramMap = new HashMap<>();paramMap.put("query", wechatName);//公众号名称URI uri = new UriTemplate(url).expand(paramMap);url = uri.toString();//获取webchatListString snuid = getSnuid();String webchatListResp = HttpTool.get(url, getSoGouHeaderMap(snuid));//解析最新文章的跳转链接 link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSzeeEp_hLeB2yqXURLyfUtLrJXD1_0k9nVqXa8Fplpd9zzyQJTTG4l0_9qb01isMvlZ64lZu95gQIMueGIVv5d1dqVpT_pMk4offWRUgcoizEACiaxkcwhvTWNDOS5z7xv1sl3spDge3bn9dTu5NB8apP4DxpTPU2JJXAvEOlBkhNcfvnKsLq2y_fex_FvLObSeMu8iyJiWt4mSINg6uUw7I3OTRHYU2og..&amp;type=1&amp;query=36%E6%B0%AA&amp;token=67498C9B4AEFECA0CACC0A62E51D7A8ACA9C78CD60B61980String link = parseArticleLink(webchatListResp, wechatName);System.out.println(link);}/*** 搜狗请求头设置*/public static Map<String, String> getSoGouHeaderMap(String snuid) {Map<String, String> map = new HashMap<>(new LinkedHashMap<>());map.put("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36");map.put("Cookie", "SNUID=" + snuid + ";");return map;}public String parseArticleLink(String html, String wechatName) {String articleLink = null;try {Document doc = Jsoup.parse(html);//拿到ul 列表数据Elements liList = doc.select("ul.news-list2 li");Element liElt = null;while (liList.size() > 0) {liElt = liList.first();Element wechatElt = liElt.selectFirst("p.tit");//找到与查询公众号wechatName名称相同的一项,拿到最新文章的跳转链接if (wechatElt != null && wechatName.equals(wechatElt.text())) {Element aElt = liElt.selectFirst("dl a[uigs]");if (aElt != null) {articleLink = aElt.attr("href");break;}}liList = liList.next();}} catch (Exception e) {logger.error("解析微信公众号最新文章跳转链接出错,error: {}", e.getMessage());}if(articleLink != null && articleLink.startsWith("/link")){articleLink = "https://weixin.sogou.com" + articleLink;}return articleLink;}

3、根据解析出的link,获取微信文章链接,并爬取微信文章内容

    @Testpublic void downloadWechatArticle() {String url = "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgSzeeEp_hLeB2zp7xyoWxqBjrJXD1_0k9nVqXa8Fplpd9zzyQJTTG4l0_9qb01isMvlZ64lZu95gQIMueGIVv5d1dqVpT_pMk4qISHGPazlJzIO6ZGefK-ffNEG4BwMubzDfho2FueAI7Qy-z8-8yTfqhcyncUMxqF1VyI0elEgkkrNr7tAJl89TTtvLRtCj8lfXLq_u3s55PQ7F9M3IWtLPS-e4Yz84xMA..&amp;type=1&amp;query=36%E6%B0%AA&amp;token=6709931A4AEFECA0CACC0A62E51D7A8ACA9C78CD60B5FE30";
//        String url = "";
//        String url = "";//获取articleUrlString snuid = getSnuid();String linkResp = HttpTool.get(url, getSoGouHeaderMap(snuid));//解析articleUrl, https://mp.weixin.qq.com/s?src=11&timestamp=1622537971&ver=3103&signature=-I-7L0hCDOh1LfBwKNDSpjZ1sUYizUM0P8Rbn5XJddf21B3mRfF*BCmJF9AdrZ0T3PjQkZgQ0rS*5tk0NAN*BvKliGSVCAhgDP5Y2ScozkF8tGp07aecT-9yqxUEBlrU&new=1String articleUrl = getWechatArticleUrl(linkResp);System.out.println(articleUrl);//爬取微信文章内容String articleResp = HttpTool.get(articleUrl);System.out.println(articleResp);}public String getWechatArticleUrl(String resp) {if(StringUtils.isBlank(resp)){return null;}int startIndex = resp.indexOf("http://mp.w");int endIndex = resp.indexOf("&new=1");if(startIndex == -1 || endIndex == -1){return null;}String url = resp.substring(startIndex, endIndex + 6);url = url.replaceAll("';        url \\+\\= '", "");return url;}

参考文章

https://blog.csdn.net/xionggegehao/article/details/102832092

java 爬取微信公众号文章 - 搜狗微信搜索相关推荐

  1. 【TUN模式】对QQ或者微信域名、QQ邮箱、微信公众号文章、微信开发者社区相关的网站访问非常慢、图片加载不出来、网页空白的解决方案

    一.问题背景 最近在电脑上登录微信时,或者浏览微信公众号的文章时,经常出现卡顿得出不来图片的情况,即使出来了也是排版异常. 二.研究现状(哈哈哈哈科研人的写作习惯?) 目前网上有些大咖对这个问题给出的 ...

  2. 如何用python爬取公众号文章搜狗微信搜索_python如何爬取搜狗微信公众号文章永久链接的思路解析...

    这篇文章主要介绍了python如何爬取搜狗微信公众号文章永久链接的思路解析 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 本文主要讲解思路,代码部分请自行解决搜狗微信 ...

  3. 如何用python爬取公众号文章搜狗微信搜索_python抓取搜狗微信公众号文章

    初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...

  4. PC端打不开微信公众号文章、微信图片加载超缓慢的处理方法(最全的解决方法)

    前言 电脑端的微信加载好友发来的图片非常慢,打开公众号的一些文章时,只能加载文字部分,图片部分加载不出来,排除网络的原因后,以下是几种解决方法. 1.-微信的安装盘,缓存文件过大,硬盘无法存放,可以尝 ...

  5. 使用WebCollector爬虫框架进行微信公众号文章爬取并持久化

    〇.Java爬虫框架有哪些? 1.nutch:Apache下开源爬虫项目,适合做搜索引擎,分布式爬虫只是其中一个功能,功能丰富,文档完整. 2.heritrix:比较成熟,用的人较多,有自己的web管 ...

  6. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

  7. python 爬取微信公众号文章(selenium+webdriver)

    """通过搜狗搜索中的微信搜索入口爬取微信公众号文章(selenium) """ import re import os import js ...

  8. python爬取微信公众号文章

    爬取微信公众号文章 获取微信公众号的url 获取每一篇文章的url ​ 选择一个公众号进入,选择一个目录进入后点复制链接,然后去浏览器打开.按F12打开检查的模式,在Console中输入$x('标签路 ...

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

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

  10. 最新微信公众号文章数据导出软件工具

    相信大家经常都会使用微信软件,对于微信公众号都不陌生,有很多人都会经常阅读公众号的文章.下面集宝数据就给大家说说如何找到好用的微信公众号文章采集器? 如何找到好用的微信公众号文章采集器 第一步:首先, ...

最新文章

  1. vue this.$router.push()传参
  2. mysql安装start service错误_为什么安装mysql会出现start service错误
  3. Hyperledger Besu(2)隐私
  4. IntrospectorCleanupListener作用
  5. 美化type=file控件
  6. win7+opencv3.0.0+vs2010 安装及配置
  7. Flutter开发 Android Studio 安装第三方模拟器—网易MuMu
  8. 微服务、容器、云原生、Kubernetes、SOA、PaaS平台、Devops 之间的关系
  9. html 点击 重置 单选,单选按钮上需要的Html 5不会重置(Html 5 required on radio button wil not reset)...
  10. 安卓逆向 和 手游辅助 学习 路线
  11. 关于 Cannot read property ‘length‘ of null 报错的解决办法
  12. 关于CPU 和 GPU
  13. 均值回归,逆市中的投资机会
  14. ocp认证考试报名_OCP最新报名考证流程
  15. 1. 计算机网络和因特网
  16. Soul源码学习(一)——soul原理及环境搭建
  17. PWA(Progressive Web App)入门系列:(一)PWA简介
  18. QtCreator更换主题皮肤
  19. opensource项目_Opensource.com 2014年年度阅读清单
  20. java 实现逆波兰表达式_逆波兰表达式java实现

热门文章

  1. funcode拍飞虫C语言报告,【逻辑游戏面试题】面试问题:funcode… - 看准网
  2. iOS 虚拟GPS 就是为了玩pokemon go 哈哈哈哈
  3. asp小偷转html,ASP之XMLHTTP小偷程序的简单代码范例
  4. 西门子s300编程实例_plc西门子s300编程 西门子编程1000例
  5. 如何从零开始准备数学建模竞赛?
  6. 计算机教室网络布线费用,办公室网络布线价格是怎么预算的
  7. Spring学习(下)
  8. 10分钟入门HTML
  9. 原画插画零基础自学|原画基础入门教程
  10. oracle bpm 教学视频,Oracle BPM 官方文件摘录