Java 百度链接提交推送

发布时间:2018-04-21作者:laosun阅读(714)

Java

Java 百度链接提交推送:链接提交工具是网站主动向百度搜索推送数据的工具,本工具可缩短爬虫发现网站链接时间,网站时效性内容建议使用链接提交工具,实时向搜索推送数据。本工具可加快爬虫抓取速度,无法解决网站内容是否收录问题。百度搜索资源平台为站长提供链接提交通道,您可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接。

    使用说明

    • 1. 链接提交工具是网站主动向百度搜索推送数据的工具,本工具可缩短爬虫发现网站链接时间,网站时效性内容建议使用链接提交工具,实时向搜索推送数据。本工具可加快爬虫抓取速度,无法解决网站内容是否收录问题

    • 2. 百度搜索资源平台为站长提供链接提交通道,您可以提交想被百度收录的链接,百度搜索引擎会按照标准处理,但不保证一定能够收录您提交的链接。

    1524281070407059468.png


    import java.util.List;
    
    import org.apache.commons.lang.StringUtils;
    import org.apache.log4j.Logger;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.google.common.collect.Lists;
    /**
     * 百度链接推送
     * @author sun
     */
    public class PushUrlToBaidu implements Runnable {
    	
    	protected static final Logger LOG = Logger.getLogger(PushUrlToBaidu.class);
    	
    	public void run() {
    		//TODO 推送开关
    		LOG.info("开始执行百度推送任务...");
    		processExecute();
    	}
    
    	/**
    	 * 执行任务
    	 * @author sun
    	 * @date 2018年3月25日 下午11:31:13
    	 */
    	private void processExecute() {
    		// 未了避免百度的重复不友好提交,所以单独创建了一个表,把需要同步的文章全部放入到这个表中。
    		//TODO 查询是否有新发布的文章,若有,将新发布的文章存入t_XXX表中
    		
    		//TODO 检测t_XXX表中所有未推送的链接
    		List<String> urlList = Lists.newArrayList();
    		//TODO 将所有未提交的链接全部存入list,等待一次性提交
    		
    		// 开始执行百度推送
    		String result = com.sunjs.kit.HttpKit.post(com.sunjs.kit.HttpKit.baidu_add_url, urlList.toArray());
    		LOG.info("提交链接完成,开始解析json串:"+result);
    		if(StringUtils.isNotEmpty(result)){
    			JSONObject jsobj = (JSONObject) JSON.parse(result);
    			if(jsobj.getJSONArray("error")!=null){
    				//推送失败
    				LOG.error(result);
    			}else{
    				if(jsobj.getJSONArray("not_same_site")!=null){
    					JSONArray jsonArray = jsobj.getJSONArray("not_same_site");
    					Object[] notSameSite = jsonArray.toArray();
    					if(notSameSite!=null && notSameSite.length>0){
    						for(Object u:notSameSite){
    							urlList.remove(u.toString());
    						}
    					}
    				}
    				if(jsobj.getJSONArray("not_valid")!=null){
    					JSONArray jsonArray = jsobj.getJSONArray("not_same_site");
    					Object[] notValid = jsonArray.toArray();
    					if(notValid!=null && notValid.length>0){
    						for(Object u:notValid){
    							urlList.remove(u.toString());
    						}
    					}
    				}
    				if(urlList!=null && urlList.size()>0){
    					for(String url:urlList){
    						//update 表,更新推送成功的标识
    					}
    				}
    				LOG.info("本次成功推送"+urlList.size()+"条链接");
    			}
    		}else{
    			LOG.error("百度推送返回结果为null");
    		}
    	}
    }

    mysql 推送表结构:

    CREATE TABLE `t_XXX`  (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `article_id` int(10) UNSIGNED NULL DEFAULT NULL COMMENT '文章id,可为空',
      `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '链接',
      `push_baidu` int(1) NOT NULL DEFAULT 0 COMMENT '0:false  1:true',
      `push_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '推送时间',
      `add_time` timestamp(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'blog 搜索引擎链接表,推送使用' ROW_FORMAT = Compact;


0 +1

版权声明

 Java  源码

 请文明留言

0 条评论