博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
百度熊掌号历史数据提交
阅读量:4358 次
发布时间:2019-06-07

本文共 5420 字,大约阅读时间需要 18 分钟。

一、背景

SEO 为了让百度搜索引擎收录更多的文章,需要将历史数据的文章链接进行提交。SEO 那边已经申请熊掌号,这边需要调用熊掌号提供的接口进行操作(详情可查看)。

二、代码实现

通过执行定时任务的方式,每天定时提交前一天的数据至熊掌号

/*** 定时任务,定时向熊掌号推送文章数据*/public class XiongzhangQuartz {    private static Log LOG = LogFactory.getLog(XiongzhangQuartz.class);    @Autowired    private IXiongzhangTaskBiz xiongzhangTaskBiz;    @Autowired    private IArticleBiz articleBiz;    // 定时任务执行时间 每天 1点 执行    public void postArticleToXiongzhang() {        LOG.info("--------推送文章至熊掌号开始!--------");        // 文章主域名        String appHostUrl = MyPropertiesUtil.getFileDirPath("config/postToXiongzhang.properties", "appHostUrl");        // 百度熊掌历史数据提交api请求地址        String postUrl = MyPropertiesUtil.getFileDirPath("config/postToXiongzhang.properties", "postUrl");        XiongzhangTaskEntity xiongzhangIndexTask = xiongzhangTaskBiz.queryTheLastOne();        // 查询上一次执行的最后一次的文章id        int articleId = 0;        if (xiongzhangIndexTask != null) {            articleId = xiongzhangIndexTask.getArticleId();        }        // 通过id 查询新增加的文章,做静态化用        List
articleIds = articleBiz.queryLuceneIndexByArticleId(articleId, null); // 每1000条数据提交一次熊掌号 int times = articleIds.size() % 1000 == 0 ? (articleIds.size() / 1000) : (articleIds.size() / 1000 + 1); for (int i = 0; i < times; i++) { int end = (i + 1) * 1000; if (end >= articleIds.size()) { end = articleIds.size(); } List
subList = articleIds.subList(i * 1000, end); if (subList != null && subList.size() > 0) { int lastArticleId = subList.get(0).getArticleID(); StringBuilder articleLinks = new StringBuilder(); for (ArticleEntity article : subList) { // 文章url 拼接 String columnPath = StringUtil.null2String(article.getColumn().getColumnPathUrl()); String link = appHostUrl + columnPath + File.separator + article.getBasicId() + IParserRegexConstant.HTML_SUFFIX; articleLinks.append(link).append("\n"); } String result = postToXiongzhang(postUrl, articleLinks.toString()); XiongzhangTaskEntity xiongzhangResult = new XiongzhangTaskEntity(); xiongzhangResult.setArticleId(lastArticleId); xiongzhangResult.setPostSum(subList.size()); xiongzhangResult.setPostMessage(result); xiongzhangResult.setCreateDate(new Date()); xiongzhangResult.setTotalArticle(articleLinks.toString()); xiongzhangTaskBiz.insert(xiongzhangResult); } } LOG.info("--------推送文章至熊掌号结束!--------成功推送:" + articleIds.size()); } // --发送POST请求必须设置允许输出 // --不要使用缓存,容易出现问题. // --在开始用HttpURLConnection对象的setRequestProperty()设置,就是生成HTML文件头. /** * * @param postUrl * @param articleLinks * @return */ public static String postToXiongzhang(String postUrl, String articleLinks) { if (null == postUrl || null == articleLinks) { return null; } String result = ""; PrintWriter out = null; BufferedReader in = null; try { // URL统一资源定位符,使用此类可找到互联网上的资源(简单网页),读取网页的内容显示为HTML代码(类似于文件读写时的File,都是先建立一个“数据源”) URL url = new URL(postUrl); // 建立URL之间的连接,openConnection 打开一个URL连接,并运行客户端访问资源。 URLConnection conn = url.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("User-Agent", "curl/7.12.1"); conn.setRequestProperty("Host", "data.zz.baidu.com"); conn.setRequestProperty("Content-Type", "text/plain"); conn.setRequestProperty("Content-Length", "83"); // 不使用Cache // conn.setUseCaches(false); // 发送POST请求必须设置如下两行,表示设置允许输出 // URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 // true;如果不打算使用,则设置为 false。默认值为 true。 conn.setDoInput(true); // URL 连接可用于输入和/或输出。如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 // true;如果不打算使用,则设置为 false。默认值为 false。 conn.setDoOutput(true); // 返回URL的输出流, 用于写入资源 // 向网络发送数据,获取conn对应的输出流,根据现有的 OutputStream 创建不带自动行刷新的新 // PrintWriter。 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数,打印字符串 out.print(articleLinks.trim()); // 进行输出流的缓冲 out.flush(); // 通过BufferedReader输入流来读取Url的响应,conn.getInputStream()是网络返回的数据,写入本地 in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { result = "post推送出现异常!" + e; e.printStackTrace(); } finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; }}
postToXiongzhang.properties 配置文件
#熊掌号相关appHostUrl=http://www.xxxx.compostUrl=http://data.zz.baidu.com/urls?appid=熊掌号ip&token=xxx&type=batch

三、结果:

 

 

 

 

声明:本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接。 

转载于:https://www.cnblogs.com/hellovoyager1/p/9224160.html

你可能感兴趣的文章
《Docker入门实战》笔记(一)
查看>>
hdu 3635 Dragon Balls (并查集)
查看>>
文件操作
查看>>
7.java集合,泛型简单总结,IO流
查看>>
杭电2007 平方和与立方和
查看>>
JS邮箱验证-正则验证
查看>>
关于SQL查询效率,100w数据,查询只要1秒
查看>>
Quartz 2D绘图
查看>>
JS Fetch
查看>>
EJB 笔记
查看>>
【delete】Android自定义控件(四) 自定义ImageView动态设置ImageView的高度
查看>>
HDUOJ------(1230)火星A+B
查看>>
Servlet
查看>>
基于jquery地图特效全国网点查看代码
查看>>
【leetcode】867 - Transpose Matrix
查看>>
Python的平凡之路(17)
查看>>
Git for Windows之使用SSH协议开通公钥免密登陆功能
查看>>
Identity Server4学习系列一
查看>>
计算机硬件-基础
查看>>
完成登录功能,用session记住用户名
查看>>