前言:很多人用新浪博客引流,但是以前可以用api发布,但是现在已经行不通了,市面上也有诸如新浪博客批量发布软件啦,新浪博客批量发帖啦,新浪博客发布软件啊等等的各种工具,但是小心中枪,一不小心就封号处理了,所以得不偿失,于是乎就想自己写一个,找来找去,找到了目前的方案,完全是程序控制鼠标跟键盘,批量的把博客发布到新浪,但是切记不要急功近利,每天的量一定要控制好,还有时间点什么的,小心被K。
接上一篇,博客的发布页面已经进来了,下一步无疑是开始搞“创作”了,那么内容从哪里来的,这个我就不管了,你可以自己采集(等我把这个连载写完,我抽空介绍下怎么采集),也可以自己整理,最重要的是,要预先把你想发布的东西整理成我想让你整理成的样子,让程序认识,并且知道忘哪里复制。
开始正题了,这里先说一下,图片的发布是个比较头疼的问题,如果你是直接采集的,那么你可以用人家的图片外链(俗称“盗链”),这个就比较简单了,直接使用源代码方式发布上去就行了,但是如果你是自己批量生成的,那么图片就不好说了,尤其是那种在文章中嵌套的图片。这里发布的图片全在文章最前面,要嘛在文章最后面。想要嵌套在中间比较复杂些,先不做这一步。
下面这是excel的模板,跟着这个模板把文章生成好即可:
》》》模板下载传送
解压密码:123456 打开后是这个样子,怎么填都有说明,我就不多bibi了。
接下来就需要用java程序解析这个excel了,我这里有现成的,可以直接用,有一些jar包需要引入,下面是下载地址。
》》》下载传送 解码密码:123456
判定页面加载完毕用下图:
下面的代码有些多了,可能看起来要花一点时间,不过我都注释好了,应该问题不大。
package com.pub;
import java.util.List;
import org.sikuli.script.Screen;
import cn.hutool.poi.excel.sax.Excel07SaxReader;
import cn.hutool.poi.excel.sax.handler.RowHandler;
/**
* 发布一个博客
* @author
*
*/
public class PubBlog {
public static void main(String[] args) {
new PubBlog().doPub();
}
private void doPub() {
Excel07SaxReader reader = null ;
try {
Screen s = new Screen();
//打开http://i.blog.sina.com.cn
Runtime.getRuntime().exec("C:\\Program Files (x86)\\UCBrowser\\Application\\UCBrowser.exe http://i.blog.sina.com.cn/");
// //用fabowen.png这个图片判断页面是否加载完毕
s.exists("C:\\Users\\zhouyang\\Desktop\\xt\\fabowen.png", 20);
// //点击发博文这个地方
s.click("C:\\Users\\zhouyang\\Desktop\\xt\\fabowen.png");
// /**页面准备好,程序开始解析模板excel里的博文内容,下面是用流处理的方式读取的,避免excel过大造成内存溢出
// * 主要的发博文的程序逻辑在createRowHandler()方法里
// * **/
reader = new Excel07SaxReader(createRowHandler(s));
reader.read("C:\\Users\\zhouyang\\Desktop\\xt\\mb.xlsx", 0);
} catch (Exception e) {
e.printStackTrace();
}finally {
}
}
private RowHandler createRowHandler(Screen s) {
//写一个txt的列表,把已经发布过的文章标题记录下来,可以保持间断发布
String hasPubTitlePath = "C:\\Users\\zhouyang\\Desktop\\xt\\hasPubTitleList.txt";
return new RowHandler() {
@Override
public void handle(int sheetIndex, int rowIndex, List<Object> rowlist) {
//Console.log("第[{}]个sheet 第[{}]行,内容是:{}", sheetIndex, rowIndex, rowlist);
//解析rowlist,我们只解析前5列,对照模板中的分别是 标题,内容... ...
if(rowlist.size() >=5 ) {
//开始取出各个单元格内容
String title = (String) rowlist.get(0);
//过滤到空白的行,避免出现过多的空白内容
if(title.length() < 1) {
//遇到空白的标题就结束
return;
}
//取出内容
String content = (String) rowlist.get(1);
//取出标签
String tags = (String) rowlist.get(2);
//取出分类
String cls = (String) rowlist.get(3);
//取出图片
String pics = (String) rowlist.get(4);
//开始规划写博客了
//用下面的图片检测页面是否加载完毕:
s.exists("C:\\Users\\zhouyang\\Desktop\\xt\\fabuzhunbei.png", 20);
}
}
};
}
}
上面代码把准备工作做好了,包括标题,内容,图片,下一步就是处理往页面上写的工作了,下一篇继续,我歇会… …