蝴蝶效应-虎的博客
博客信息

HttpClient模拟百度搜索和点击,模拟百度SEO优化(自动翻页)(二)

0
发布时间:『 2019-09-22 16:22』  博客类别:Httpclient提高分享  阅读(1603) 评论(0)

前言

    使用Java HttpClient模拟百度搜索和点击,实现百度SEO优化,在上一篇文章HttpClient模拟百度搜索和点击,模拟百度SEO优化(自动翻页)(一)

中,已经做了研究,结果正如文章的总结所说,百度SEO的原理虽然已经完全清楚了,但是要真正的实现使用Java模拟人工点击,难度可是非常大的。

但是同样,只要是有迹可循的东西,就可以通过细心观察认真总结,搞明白实现的原理,解决问题。人工模拟百度SEO点击,就是如此,好了,话不多说,我们言归正传。

回溯和新的途径

    从HttpClient来实现模拟人工点击百度链接,的确是非常有难度的,因为百度返回的缓存,和请求的数据中,是否有加密,加密的算法在哪里,这些都是非常难以查找的,很耗时间和精力,再认真的分析,现有的Java爬虫可以使用的工具,突然有一个方法,闪入脑海,也许很多人都有接触——Java HtmlUnit。

    Java HtmlUnit, 被称为Java浏览器的开源实现的一门工具,可以模拟浏览器请求,一般被测试人员广泛使用,但是正好,这门工具,不正是模拟人工点击百度SEO的最佳选择吗,是的,无可厚非。

分析和实现

    核心问题,是要实现模拟百度搜索,然后点击搜索到的链接,跳转到需要点击的页面,并且保证整个过程的数据可以被百度统计收集到,首先是模拟百度分页点击的代码,实现如下:

    
    //bIndex是需要点击分页,如果是1,就是1-10也, 如果是2,就是11-20页,可以根据需要调整
    HtmlPage mypage = null ;
    for(int page=(bIndex-1)*10+1; page<=(bIndex)*10; page++) {
        //keys是百度搜索的关键字, page是页码
        String baiduUrls = "https://www.baidu.com/s?wd="+URLEncoder.encode(keys)+"&oq="
        +URLEncoder.encode(keys)+"&pn=" + ((page-1)*10) ;
        mypage  = client.getPage(baiduUrls);       	
        String txt = mypage.getWebResponse().getContentAsString() ;
    }

    模拟后,根据关键字,网站链接匹配到百度搜索到的连接,这个链接,一般是百度自己的链接,点击后,会通过百度的页面进行自动跳转到我们自己网站的页面。模拟的整个过程,是一个完全模拟手动操作的过程,完全真实,百度无法发现。

    模拟点击页面链接的方法如下:

     //找到返回的URL的列表的DIV
     DomNodeList<DomElement> articleas= (DomNodeList<DomElement>)mypage.getElementsByTagName("div"); 
     //挨个循环div元素,匹配是否有keysSear关键词的div,keysSear是网站的链接,或者域名
     for(DomElement ast: articleas){
          if(ast.getAttribute("class").trim().equals("result c-container") 
          && isContainSiteKeys(ast.asText(), keysSear)  ){
               try{
                        //找到后,需要设置WebClient的属性,如下
                        client.getOptions().setJavaScriptEnabled(true);
                        client.getOptions().setCssEnabled(false);
                        client.setAjaxController(new NicelyResynchronizingAjaxController());
                        client.getOptions().setTimeout(300000);
                        client.getOptions().setThrowExceptionOnScriptError(false);
                        client.getOptions().setActiveXNative(false);
                        client.getOptions().setThrowExceptionOnFailingStatusCode(false);
                        client.getOptions().setRedirectEnabled(true); 
                        client.getOptions().setUseInsecureSSL(true);
                                	
                        page2  =  ((HtmlAnchor)ast.getChildNodes().get(0).getChildNodes().get(0)).click();
                        //根据找到的div,拿到 URL
                        clickurls = page2.getUrl().toString() ;
                        //模拟点击        		
                        page2  = client.getPage(clickurls);  
                        String txt2 = page2.asXml();
                        //因为点击时一个异步的过程,需要等待HtmlUnit执行完毕,所以这里等待30秒
                        Thread.sleep(30000) ;        		
                        System.out.println(txt2);
            }catch(Exception e){
                 e.printStackTrace();
            }  
       }
  }


基本模拟完毕后,看看百度统计的结果:


image.png


可以看到结果:


image.png


好的,到此为止,大功告成,模拟成功。

再下边,分享一些刷百度SEO的效果数据。


image.png

    

     复杂问题,就这么简单的解决了。

   为此,专门做了一个根据代理IP,刷百度SEO关键词的工具,有需要的童鞋可以联系我额,嘿嘿!

    当然,到这里并不意味着结束,由于Java HtmlUnit模拟请求速度较慢,总是需要耗费大量的电脑内存资源,其实Java HttpClient模拟百度SEO才是最完美的解决之道,后边会继续分享,敬请期待:HttpClient模拟百度搜索和点击,模拟百度SEO优化(自动翻页)(三)。


关键字:   Java     Java HttpClient     Java爬虫     模拟百度点击     模拟百度搜索     SEO优化  
评论信息
暂无评论
发表评论
验证码: 
博主信息
【蝴蝶效应-虎】
  年轻只有一次,但是梦想却可以奋斗一辈子!

博主寄语:也曾年少轻狂,无奈时光易老!希望将绵薄的技术分享进行到底。
有求必应:如果需要帮助,请给我留言,一定知无不言,言无不尽,请大家多多支持博主,谢谢。
分享无悔:如果有一天你可以回到过去,你还愿意成为现在的自己吗?不让自己后悔,时光无悔。
  • 36文章总数
  • 5486访问次数
  • 38建站天数
  • 友情链接
    Copyright © 2019-2025 蝴蝶效应-虎
    陕ICP备19011911号-2