java 爬取微信公众号文章 - 搜狗微信搜索
需求描述:参照图,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..&type=1&query=36%E6%B0%AA&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..&type=1&query=36%E6%B0%AA&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×tamp=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 爬取微信公众号文章 - 搜狗微信搜索相关推荐
- 【TUN模式】对QQ或者微信域名、QQ邮箱、微信公众号文章、微信开发者社区相关的网站访问非常慢、图片加载不出来、网页空白的解决方案
一.问题背景 最近在电脑上登录微信时,或者浏览微信公众号的文章时,经常出现卡顿得出不来图片的情况,即使出来了也是排版异常. 二.研究现状(哈哈哈哈科研人的写作习惯?) 目前网上有些大咖对这个问题给出的 ...
- 如何用python爬取公众号文章搜狗微信搜索_python如何爬取搜狗微信公众号文章永久链接的思路解析...
这篇文章主要介绍了python如何爬取搜狗微信公众号文章永久链接的思路解析 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧. 本文主要讲解思路,代码部分请自行解决搜狗微信 ...
- 如何用python爬取公众号文章搜狗微信搜索_python抓取搜狗微信公众号文章
初学python,抓取搜狗微信公众号文章存入mysql mysql表: 代码: import requests import json import re import pymysql # 创建连接 ...
- PC端打不开微信公众号文章、微信图片加载超缓慢的处理方法(最全的解决方法)
前言 电脑端的微信加载好友发来的图片非常慢,打开公众号的一些文章时,只能加载文字部分,图片部分加载不出来,排除网络的原因后,以下是几种解决方法. 1.-微信的安装盘,缓存文件过大,硬盘无法存放,可以尝 ...
- 使用WebCollector爬虫框架进行微信公众号文章爬取并持久化
〇.Java爬虫框架有哪些? 1.nutch:Apache下开源爬虫项目,适合做搜索引擎,分布式爬虫只是其中一个功能,功能丰富,文档完整. 2.heritrix:比较成熟,用的人较多,有自己的web管 ...
- python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章
下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...
- python 爬取微信公众号文章(selenium+webdriver)
"""通过搜狗搜索中的微信搜索入口爬取微信公众号文章(selenium) """ import re import os import js ...
- python爬取微信公众号文章
爬取微信公众号文章 获取微信公众号的url 获取每一篇文章的url 选择一个公众号进入,选择一个目录进入后点复制链接,然后去浏览器打开.按F12打开检查的模式,在Console中输入$x('标签路 ...
- python下载微信公众号文章_python如何导出微信公众号文章方法详解
1.安装wkhtmltopdf 下载地址:https://wkhtmltopdf.org/downloads.html 我测试用的是windows的,下载安装后结果如下 2 编写python 代码导出 ...
- 最新微信公众号文章数据导出软件工具
相信大家经常都会使用微信软件,对于微信公众号都不陌生,有很多人都会经常阅读公众号的文章.下面集宝数据就给大家说说如何找到好用的微信公众号文章采集器? 如何找到好用的微信公众号文章采集器 第一步:首先, ...
最新文章
- vue this.$router.push()传参
- mysql安装start service错误_为什么安装mysql会出现start service错误
- Hyperledger Besu(2)隐私
- IntrospectorCleanupListener作用
- 美化type=file控件
- win7+opencv3.0.0+vs2010 安装及配置
- Flutter开发 Android Studio 安装第三方模拟器—网易MuMu
- 微服务、容器、云原生、Kubernetes、SOA、PaaS平台、Devops 之间的关系
- html 点击 重置 单选,单选按钮上需要的Html 5不会重置(Html 5 required on radio button wil not reset)...
- 安卓逆向 和 手游辅助 学习 路线
- 关于 Cannot read property ‘length‘ of null 报错的解决办法
- 关于CPU 和 GPU
- 均值回归,逆市中的投资机会
- ocp认证考试报名_OCP最新报名考证流程
- 1. 计算机网络和因特网
- Soul源码学习(一)——soul原理及环境搭建
- PWA(Progressive Web App)入门系列:(一)PWA简介
- QtCreator更换主题皮肤
- opensource项目_Opensource.com 2014年年度阅读清单
- java 实现逆波兰表达式_逆波兰表达式java实现
热门文章
- funcode拍飞虫C语言报告,【逻辑游戏面试题】面试问题:funcode… - 看准网
- iOS 虚拟GPS 就是为了玩pokemon go 哈哈哈哈
- asp小偷转html,ASP之XMLHTTP小偷程序的简单代码范例
- 西门子s300编程实例_plc西门子s300编程 西门子编程1000例
- 如何从零开始准备数学建模竞赛?
- 计算机教室网络布线费用,办公室网络布线价格是怎么预算的
- Spring学习(下)
- 10分钟入门HTML
- 原画插画零基础自学|原画基础入门教程
- oracle bpm 教学视频,Oracle BPM 官方文件摘录