浅浅谈谈如何利用Javase+多线程+计算机网络的知识做一个爬CSDN阅读量总访问量的程序
目录
我们发现csdn的文章
首先为了印证我们的想法
我们用postman往csdn我们任意一篇文章发起post请求
发送请求
编辑获得响应结果
我们发现我们的阅读量上涨
PostRequestSender类
但是我们经过测试发现
定义一个字符串数组 把URL放进去
然后延迟启动
在线程池里面设置任务的延迟和每次执行的间隔
主方法代码
博客的阅览量也在增长
然而为了防止被网站监测出来
我们可以采取其他策略
比如说往请求体里面塞一个随机数
注意不要写的太复杂 防止电脑卡爆
个人号推广
博客主页
Web后端开发
Web前端开发
数据库开发
项目实战
算法与数据结构
计算机基础
回忆录
我们发现csdn的文章
只要你点进去
就会增长阅读量
结合我们学习的计算机网络相关知识
不难猜测是只要向网页发送post请求
就能获得一次阅读量的增长。
POST请求是HTTP协议中的一种方法,用于向服务器提交数据,通常用于创建或更新资源,或者执行一些操作,比如提交表单数据、上传文件等。在Web开发中,POST请求比GET请求更安全,因为它将数据包含在请求体中,而不是像GET请求一样在URL中可见。
首先为了印证我们的想法
我们用postman往csdn我们任意一篇文章发起post请求

打开postman
发送请求
获得响应结果

我们发现我们的阅读量上涨

证实了我们的想法
我们只要往文章发送请求就行
利用网络编程的知识
我们写个发起请求的类
PostRequestSender类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Random;public class PostRequestSender {private String url;static long ans=0;public PostRequestSender(String url) {this.url = url;}public void sendPostRequest() throws IOException {// 创建URL对象URL obj = new URL(url);// 打开连接HttpURLConnection con = (HttpURLConnection) obj.openConnection();// 设置请求方法为POSTcon.setRequestMethod("POST");// 设置请求头con.setRequestProperty("User-Agent", "Java client");con.setRequestProperty("Content-Type", "application/json");// 可选:设置请求体Random random=new Random();int randomValue = random.nextInt(1000); // 生成一个0到999的随机整数String postData = "{\"key1\":\"value1\", \"key2\":\"" + randomValue + "\"}";con.setDoOutput(true);try (OutputStream os = con.getOutputStream()) {byte[] input = postData.getBytes(StandardCharsets.UTF_8);os.write(input, 0, input.length);}// 获取响应int responseCode = con.getResponseCode();System.out.println("Sending POST request to URL: " + url);System.out.println("Response Code: " + responseCode);System.out.println("run "+(ans++)+" ...");// 读取响应内容try (BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8))) {String inputLine;StringBuilder response = new StringBuilder();while ((inputLine = in.readLine()) != null) {response.append(inputLine);}
// System.out.println("Response Body: " + response.toString());}}
}
但是我们经过测试发现
在同一时间内连续发送多次post请求
只会记录一次阅读量
这说明
CSDN自带有反爬的程序
我们可以规定在1分钟内依次爬取100篇文章
定义一个字符串数组 把URL放进去

然后延迟启动
利用的是多线程的知识
创建线程池
在线程池里面设置任务的延迟和每次执行的间隔
我们遍历数组

主方法代码
import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class Main {public static void main(String[] args) throws Exception {String[] urls = {"https://blog.csdn.net/qq_30500575/article/details/139987333?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139962431?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139962247?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139926411?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139920678?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139920678?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139904327?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139904250?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139841808?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139841808?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139842155?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139857617?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139857996?spm=1001.2014.3001.5501","https://blog.csdn.net/qq_30500575/article/details/139858097?spm=1001.2014.3001.5501"// Add more URLs as needed};// 创建定时执行的线程池ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);// 循环访问多个网址,并每隔20秒执行一次for (String url : urls) {Runnable task = () -> {try {PostRequestSender sender = new PostRequestSender(url);sender.sendPostRequest();} catch (IOException e) {e.printStackTrace();}};// 初始延迟10秒,每隔50秒执行一次任务executor.scheduleAtFixedRate(task, 10, 50, TimeUnit.SECONDS);}// 等待所有任务完成后关闭线程池executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);executor.shutdown();}
}
启动 查看控制台信息
注意联网哦
依次爬取打印

博客的阅览量也在增长

同时还会打印状态码和URL地址
然而为了防止被网站监测出来
我们可以采取其他策略
比如说往请求体里面塞一个随机数

注意不要写的太复杂 防止电脑卡爆

个人号推广
博客主页
多多!-CSDN博客
Web后端开发
https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482
Web前端开发
https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482
数据库开发
https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482
项目实战
https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482
算法与数据结构
https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482
计算机基础
https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482
回忆录
https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482
相关文章:
浅浅谈谈如何利用Javase+多线程+计算机网络的知识做一个爬CSDN阅读量总访问量的程序
目录 我们发现csdn的文章 首先为了印证我们的想法 我们用postman往csdn我们任意一篇文章发起post请求 发送请求 编辑获得响应结果 我们发现我们的阅读量上涨 PostRequestSender类 但是我们经过测试发现 定义一个字符串数组 把URL放进去 然后延迟启动 在线程池里面…...
Vscode 中launch.json与tasks.json文件
Vscode 中launch.json与tasks.json文件 launch.json文件基本结构主要属性示例配置PythonCNode.js 常见配置项1. Python2. C3. Node.js 使用示例 tasks.json基本结构主要属性示例配置C 编译任务Python 运行任务Node.js 运行任务 常见配置项使用示例 tasks.json与launch.json文件…...
C#基于SkiaSharp实现印章管理(2)
上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象,但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。 通过百度及查看微软的帮助文档,上述情况下需自定义转换类以处理SKColor类型数据的…...
大二C++期末复习(自用)
一、类 1.定义成员函数 输入年份判断是否是闰年,若是输出年份;若不是,输出NO #include<iostream> #include<cstring> using namespace std; class TDate{private:int month;int day;int year;public:TDate(int y,int m,int d)…...
重大进展!微信支付收款码全场景接入银联网络
据中国银联6月19日消息,近日,银联网络迎来微信支付收款码场景的全面接入,推动条码支付互联互通取得新进展,为境内外广大消费者提供更多支付选择、更好支付体验。 2024年6月,伴随微信支付经营收款码的开放,微…...
msvcr110.dll丢失的解决方法,亲测有效的几种解决方法
最近,我在启动一个程序时,系统突然弹出一个错误提示,告诉我电脑缺失了一个名为msvcr110.dll的文件。这让我感到非常困惑,因为我之前从未遇到过这样的问题。经过一番搜索和尝试,我总结了5种靠谱的解决方法。下面分享给大…...
SUSE Linux 15 sp5上Nginx安装配置升级
1.安装SUSE linux 15 SP5 图形化界面安装很简单,选择最小安装,安装好后,使用vim编辑配置文件,结果提示"bash: vim: command not found"。 最简安装把一些常用命令都整没有了,于是又重新选择了Server Applica…...
突破Web3红海,DePIN如何构建创新生态系统?
撰文:TinTinLand 本文来源香港Web3媒体Techub News专栏作者TinTinLand 2023 年 DePIN 赛道的火热成为 Web3 行业的重点关注方向,当前如何以可扩展、去中心化、安全方式推动 DePIN 赛道赋能下的 AI 版图建设,寻找更多 Web3 行业创新机遇成为…...
裸机与操做系统区别(RTOS)
声明:该系列笔记是参考韦东山老师的视频,链接放在最后!!! rtos:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件…...
详解 ClickHouse 的分片集群
一、简介 分片功能依赖于 Distributed 表引擎,Distributed 表引擎本身不存储数据,有点类似于 MyCat 之于 MySql,成为一种中间件,通过分布式逻辑表来写入、分发、路由来操作多台节点不同分片的分布式数据 ClickHouse 进行分片集群的…...
AI问答-医疗:什么是“手术报台”
手术报台并不是传统意义上的医疗工具或设备,而是一个与手术耗材追溯管理相关的系统或工具。以下是对手术报台的详细解释: 一、定义与功能 手术报台系统,如医迈德手术报台系统,是一款面向医院跟台人员的微信小程序。 它通过手术耗…...
S-Clustr(影子集群)V3 高并发,去中心化,多节点控制
S-Clustr 项目地址:https://github.com/MartinxMax/S-Clustr/releases/tag/S-Clustr-V3.0 Maptnh Не ограничивайте свои действия виртуальным миром. GitHub: Maptnh Jay Steinberg Man kann die Menschen, die man hasst, in d…...
支持WebDav的网盘infiniCloud(静读天下,Zotero 等挂载)
前言 WebDav是一种基于HTTP的协议,允许用户在Web上直接编辑和管理文件,如复制、移动、删除等。 尽管有一些网盘支持WebDav,但其中大部分都有较多的使用限制。这些限制可能包括:上传文件的大小限制、存储空间的限制、下载速度的限…...
Linux命令行导出MySQL数据库备份并压缩
Linux命令行导出MySQL数据库备份并压缩 导出SQL: 如果使用的是 MySQL 或者 MariaDB 可以使用mysqldump工具进行数据备份的导出; 基本命令: mysqldump -u用户名 -p密码 数据库名称 > 要导出的文件名.sql替换掉你实际的数据库“用户名”…...
二叉树的广度优先搜索(层次遍历)
目录 定义 层序遍历的数据结构 实现过程简述 具体代码 定义 层序遍历就是从左到右一层一层地遍历二叉树。 层序遍历的数据结构 层序遍历需要借用一个辅助数据结构实现,由于队列具有先进先出的特性,符合一层一层遍历的逻辑,而栈先进后出…...
AU音频重新混合音频,在 Adobe Audition 中无缝延长背景音乐,无缝缩短BGM
导入音频,选中音频,并且点 New Multitrack Session 的图标 设计文件名和存储路径,然后点 OK 点 Essential Sound 面板点 Music (如果没有这个面板 点菜单栏 Windows > Essential Sound 调出来) 点 Duration 展…...
11-Django项目--Ajax请求二
目录 模版: demo_list.html perform_list.html 数据库操作: 路由: 视图函数: Ajax_data.py perform.py 模版: demo_list.html {% extends "index/index.html" %} {% load static %} # 未实现修改,删除操作{% block content %}<div class"container…...
代码评审——Java占位符%n的处理
问题描述 在软件开发项目中,特别是在处理动态内容生成与呈现至前端界面的过程中,正确运用占位符以确保文本完整性和数据准确性显得尤为重要。不当的占位符管理不仅可能导致语法错误或逻辑混乱,还会引发一系列隐蔽的问题,这些问题…...
超低排放标准
据朗观视觉小编了解发现,超低排放标准作为衡量一个行业或企业环保水平的重要指标,越来越受到社会各界的关注。本文将深入探讨超低排放标准的内涵、实施意义以及未来展望。 一、超低排放标准的定义 超低排放标准,是指在特定工业生产过程中&am…...
Day15 —— 大语言模型简介
大语言模型简介 大语言模型基本概述什么是大语言模型主要应用领域大语言模型的关键技术大语言模型的应用场景 NLP什么是NLPNLP的主要研究方向word2vecword2vec介绍word2vec的两种模型 全连接神经网络神经网络结构神经网络的激活函数解决神经网络过拟合问题的方法前向传播与反向…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
