声明:\color{red}{声明:}声明:

本人写这个小程序和写这篇博客的目的是用于学习研究,并且\color{red}{本人写这个小程序和写这篇博客的目的是用于学习研究,并且}本人写这个小程序和写这篇博客的目的是用于学习研究,并且
只是在测试的时候用了一下,并没大规模的为自己或别人增加\color{red}{只是在测试的时候用了一下,并没大规模的为自己或别人增加}只是在测试的时候用了一下,并没大规模的为自己或别人增加
访问量。请读者也以学习为目的,不要作用在其它不法的方面\color{red}{访问量。请读者也以学习为目的,不要作用在其它不法的方面}访问量。请读者也以学习为目的,不要作用在其它不法的方面

前情引入

自己在写博客的时候,为了调整好效果,总是先写好,发布出来,然后自己开两个窗口,一个窗口用来修改格式,另一个用来观察样式是否满足要求。(虽然csdn提供了预览效果,但是由于窗口大小不一样,和最终展示的效果也不一样,所以自己开两个窗口来调整样式)。然后我就发现了一个问题,自己在自己的文章里刷新,访问量也会增加。开始我也没在意,直到最近,学了一些网络相关的知识……突发奇想,我要是用一段代码来不停的访问呢?那岂不是可以一直刷访问量?

着手测试

有了想法之后,我就开始着手代码测试,通过简单的测试,发现是可以增加访问量的,但是,没有像想象中的那样增加。我去百度了一下,原来是同一个ip,同一篇博文,一分钟内只算一次有效访问。哦原来是这样,那意思就是每分钟就只能增加博文数量那么多访问量了,那就需要改变一下策略了。

完整思路:
读取博客首页,然后利用正则找出所有博文的地址,然后去读取每篇博文,间隔一分钟,重复执行一次。

代码

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;@SuppressWarnings("all")
public class InetAddressTest04
{public static void main(String[] args) throws Exception{//此处双引号中输入测试用的博客首页地址,例如:https://blog.csdn.net/xxxxreVisit("");}//重复访问的方法public static void reVisit(String blogAddress) throws Exception{int count = 0;while (true){//因为同一篇文章,同一个ip,一分钟内只算一次有效的访问,所以用计算了某次中花费了多少时间,便于计算下次访问的时间int onceCount;long start = System.currentTimeMillis();//根据集合是否为空来判断调用那个访问的方法if (allArticleAddress.isEmpty()){ onceCount = firstVisit(blogAddress); }else{ onceCount = againVisit(); }System.out.println("您此次共增加访问量:"+onceCount+"   累计共增加访问量:"+(count+=onceCount));long end = System.currentTimeMillis();long diff = 70*1000 - (end - start);Thread.sleep( diff >= 0?diff:0 );}}static ArrayList<String> allArticleAddress = new ArrayList<>();//第一次访问的方法public static int firstVisit(String blogAddress) throws Exception{//传入博客首页地址,并且获得一个由网络构成的输入流URL blogURL = new URL(blogAddress);InputStream in = blogURL.openStream();//利用StringBuilder,将博客首页地址取出出来,并且拼接成一个字符串,StringBuilder pageText = new StringBuilder();int len;byte[] buffer = new byte[1024];while ((len = in.read(buffer)) != -1){ pageText.append(new String(buffer, 0, len, StandardCharsets.UTF_8)); }//利用正则,查找出首页里所有的博文地址,Pattern compile = Pattern.compile("https://blog.csdn.net/.*?/article/details/\\d{9}");Matcher matcher = compile.matcher(pageText.toString());int count = 0;while (matcher.find()){//将每个博文地址存入一个ArrayList集合中,注意去重String eachArticleAddress = matcher.group();if (allArticleAddress.contains(eachArticleAddress)){ continue; }allArticleAddress.add(eachArticleAddress);//根据每一个博文地址创建URL对象,获取其输入流,只要读博文里的一个字节,就算访问URL eachUrl = new URL(eachArticleAddress);InputStream eachArticlenIn = null;/*这里不知道为什么会出现“文件找不到”这个异常,但是我将出现异常的这个博文地址复制到浏览器中是可以打开的。既然不知道原因,而且是小部分,所以就利用异常处理机制,直接跳过这篇博文,但是还是需要将其存入集合中,因为后面重复访问的过程需要从集合中读取每篇博文的地址*/try{ eachArticlenIn = eachUrl.openStream(); }catch (FileNotFoundException e){allArticleAddress.add(eachArticleAddress);continue;}//计数、读取一个字节、释放资源等操作count++;eachArticlenIn.read();eachArticlenIn.close();}in.close();return count;}//再次访问的方法,再次访问就简单了,因为第一次访问已经将每篇博文的地址存入集合中了public static int againVisit(){int count = 0;//遍历集合,去每篇博文读取一个字节for (int i = 0; i < allArticleAddress.size(); i++){URL url = null;InputStream in = null;//也会出现“文件找不到”的异常,也直接跳过try{url = new URL(allArticleAddress.get(i));in = url.openStream();in.read();count ++;}catch (FileNotFoundException e){ continue; }catch (Exception e){ e.printStackTrace(); }finally{if (in != null){try{ in.close(); }catch (IOException e){ e.printStackTrace(); }}}}return count;}
}

我代码中写了不少注释,所以我就不详细解释了。
经过简单的测试,可以完成功能,但是存在一些bug,但是由于最终不会实际的投入使用,所以也就没去处理,简单描述一下:

  1. 不知道是网络还是什么原因,会出现FileNotFoundException这个异常,我只是将它跳过了。
  2. 网络不好的话,会很耗时,可以考虑使用多线程
  3. 我测试好像发现,当同一个ip访问量到了一定的次数之后,有效访问时间间隔会边长。

我觉得那些QQ空间刷访问量、刷攒之类的,可能就是通过这种方式实现的。

关于爬虫

整个互联网就像是一张网,这些网页链接就像是蛛丝,把这个整个互联网给连接起来了。而爬虫,就是在这些网络间爬取数据的程序,爬虫的英文名就是spider,蜘蛛。

我们天天都在用的搜索引擎,其实也是一个爬虫,只不过他是一个超级大的爬虫。为什么我们输入一个关键字,就能搜索到很多相关的信息,其实是搜索引擎这个超级大的爬虫,在网络中,根据我们输入的关键字爬取出来的数据。

技术本身,是没有善恶之分的,使用它的人,决定了它是善是恶。就像核技术,用在能源方面,可以造福人类,但是用在武器上,也可能毁灭人类。爬虫也是如此,本身没有善恶之分的,只是一些居心不良的人,让它背上了莫须有的污名。

爬虫协议

用程序去爬取网站的数据,会增大网站服务器的负担,而网站的用户并没有增加,所以很多网站是不欢迎爬虫的。除非是百度这种搜索引擎的爬虫,因为被爬取出来,就意味着可能会被用户点击。

但也有一些网站,也不希望百度爬取它的数据,那就是电商网站,因为如果用户在百度上搜索一件商品,直接将电商网站里的商品价格、描述等数据搜索出来了,那么用户就会对电商网站的依赖降低,从而更加依赖百度,电商网站的用户就会流失。比如我们在百度搜索关键字:机械键盘

这些数据就没有被抓取出来,但百度怎么知道哪些数据是网站不希望被爬取的,哪些数据是网站希望被爬取的呢?所以就产生了一个东西:爬虫协议。爬虫协议一般在网站的根目录下,协议里面标明了哪些数据是可以被爬取的,哪些数据是不希望被爬取的,就以淘宝为例。淘宝的爬虫协议:https://www.taobao.com/robots.txt

User-agent 代表的是爬虫的的种类,Disallow代表的是禁止爬取的数据。通过简单的理解,淘宝是不希望百度这个爬虫爬取它任何数据的,理由我前面也说过了。

我再来看一看csdn 的爬虫协议:https://www.csdn.net/robots.txt
* 是通配符,代表任何类型的爬虫,下面是一些csdn不希望爬虫爬取的数据地址列表,我们爬取的首页地址是:https://blog.csdn.net/xxxx,爬取的博文地址是:https://blog.csdn.net/xxxx/article/details/xxxx。都没在上面的列表中。其实原因也很简单,如果用户通过一个关键字搜索了一些关于技术类的东西,但搜索引擎连文章内容都没展示出来,只显示了“由于该网站的robots.txt文件存在限制指令(限制搜索引擎抓取),系统无法提供该页面的内容描述 - 了解详情”,那人肯定不会点进去。

所以我们做的,爬取这些数据,也是没有违反csdn 的规定的。但是如果是恶意的去爬取,企图增加访问量,那就是另一回事了,被封号也说不定哦。

有什么不对或不懂的地方,欢迎讨论交流。

使用java代码增加一点博客访问量相关推荐

  1. 如何增加博客访问量(一)

    如何增加博客访问量(一) 如何增加博客访问量? 自己动手,丰衣足食(即答 代码: package java_xer;import java.io.IOException; import java.io ...

  2. 如何在 CSDN 中增加博客访问量 史上最简单的博客教程 学会之后博客访问量直线上升。

    蹭热度 如何蹭是问题.下面分几点 你发布的有关技术是什么 你发布的是否是别人发布过的东西 你发布的东西在别人是怎样搜索的. 其实重点在流量,也就是点击.点击到位了,无论你文章来自哪里,或者说抄自哪里, ...

  3. 增加博客访问量的 5 种方法

    爱发猫认为几乎所有的内容营销人员都知道拥有一个博客所带来的流量很可观.当然,让人们阅读你的博客是拥有一个博客的主要原因,不是吗?如果你因为你的博客流量没有达到你想要的程度而感到沮丧,不要着急.增加这些 ...

  4. 【流量】一觉醒来发现CSDN博客访问量增加十倍!原来是这个原因

    想必点击来的同学都是想提高自己博文访问量的,而具体的方法相信你已经掌握了,此时我的博客访问量+1 咳咳,这样写就真的太扯淡了,毕竟咱也是搞技术的,虽然现在是流量之上,但是CSDN毕竟还是一个技术社区嘛 ...

  5. 各大公司java面试整理对应问题博客整理

    各大公司java面试整理对应问题博客整理! 阿里 分库分表 数据库中间件 MyCAT是一个强大的数据库中间件,不仅仅可以用作读写分离,以及分表分库.容灾管理,而且可以用于多租户应用开发.云平台基础设施 ...

  6. 每天定时查询CSDN博客访问量,并通过echarts进行展示

    效果展示 Github链接:https://github.com/qushencn/springboot Csdn下载链接:https://download.csdn.net/download/wei ...

  7. 【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/ ...

  8. python爬虫设计刷博客访问量(刷访问量,赞,爬取图片)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 需要准备 ...

  9. 测试代码发布到博客效果(Windows Live Writer发布)

    测试代码发布到博客效果(Windows Live Writer发布) public class SwitchCase {/*** 1.switch后面的表达式为常量表达式,类型只能是可以转化为int. ...

最新文章

  1. DefaultTableCellRenderer
  2. 2022 美国国家工程院院士公布:张宏江等入选海外院士,马斯克及微软CEO在列...
  3. 不用CMake编译查询OpenCV函数、类定义等的方法(全文搜索-所有文档搜索指定内容神器:CJC超级硬盘快搜索和AnyTXT Searcher)
  4. 用xml配置文件加载资源时(XML和XMLList的转换)
  5. 关于Java中String类的intern()方法
  6. java.sql.SQLException: Io 异常: Got minus one from a read call
  7. Android系统手机端抓包方法(tcpdump)
  8. 机器人被抢走ntr_(科普)当被NTR剧情虐到的时候怎么办
  9. Qt工作笔记-QString中Split与section效率实践
  10. ASP.NET MVC的Razor引擎:IoC在View激活过程中的应用
  11. 备份有困难?Oracle DBA详述RMAN备份
  12. 学习腾讯的hover效果
  13. 分布式数据库的字符集
  14. 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
  15. 12864 c语言,单片机12864 c程序
  16. 深度总结,带你玩转 NVIDIA GPU
  17. 为Ubuntu安装中文语言包
  18. 【MATLAB深度学习工具箱】学习笔记--体脂估计算例再分析:拟合神经网络fitnet里面的函数】
  19. 教你轻松理解Go Ticker的用法和实现原理
  20. php 计算月差,php计算月份差

热门文章

  1. 计算机主板原则,主板与cpu的搭配原则
  2. 单片机c语言篮球比分_C51单片机篮球比赛计分器原理图与单片机代码
  3. 日常使用计算机过程中发现的中断,2010年会计从业考试《初级电算化》章节习题及答案(5)...
  4. 红队神器-Evil-Winrm详细使用指南
  5. Java项目之搜索引擎
  6. Linux中fdisk创建扩展分区,linux fdisk创建分区
  7. Python表白代码合集:5种表白代码、比小心心、无限弹窗、520表白墙、抖音热门表白小软件、无套路表白
  8. python国家数据可视化
  9. 网页中怎么实现客户端通过扫描仪把图像传到服务器上
  10. PS插件(一)iconfont