C# 网络爬虫 抓取“北京标准时间“ 网页请求

Posted 小马哥棺材板

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 网络爬虫 抓取“北京标准时间“ 网页请求相关的知识,希望对你有一定的参考价值。

很多时候需要使用到北京时间,例如一些签到功能 过了24小时就可以签到一次 如果直接获取用户本地时间 因为本机时间是可以自行修改的 这就造成非常大的BUG 当然也可以使用服务器本机的时间 看个人需求

效果图:


在C#中已经封装好了两个类

简单介绍下

HttpWebRequest -主要用于模拟客户端发送网络请求

HttpWebResponse -用来接收服务器返回的数据

演示网站:北京时间
请求多了也并不会限制访问

分析网页源代码:

上图看出 时间在中上部

name=“description” content="天气网时差频道(time.tianqi.com)介绍中国北京时间,北京时间在线校准,北京现在时间:2021-09-18 -20:15:41。查世界各大城市时差,知最新时间,来天气网时差频道。

而在时间的两边有一个" : " 和一个 " 。 " 符号 且只有一个
时间刚刚好在中间 可以以这两个符号为终点

代码:

定义URL(也就是目标地址)

 string  url = "http://time.tianqi.com/";

也可以直接在 HttpWebRequest 的括号参数填写都是字符串类型

发起请求:

 HttpWebRequest a = (HttpWebRequest)WebRequest.Create(url);

响应请求:

  HttpWebResponse b = (HttpWebResponse)a.GetResponse();

返回的网页源代码 需要一个“流”进行接收

返回流:

  using (Stream s = b.GetResponseStream())  
  using (StreamReader r = new StreamReader(s, Encoding.UTF8))

StreamReaad-因流不能直接转成字符,所以需要SreamRead进行转换
第1个参数:流
第2个参数:字符编码 如出现乱码,看网页编码是否和你程序编码对应

using-因为文件流会消耗大量的资源 而文件流比较特殊 并不能被GC(垃圾回收) 给释放 必须手动关闭 也可以使用using 关键字进行自动释放

字符串分割:
因为只需要他的时间 返回的一大堆不需要的数据 使用就需要进行分割 把不要的字符全部过滤 可以使用 字符串的方法 或者 正则表达式 因为正则表达式不好定义 所以使用的字符串的方法

C#字符串的方法

代码:

string str = r.ReadToEnd();  //读取文件流赋值给字符串            
 int n = str.IndexOf(':');//找 : 在的第几个字
   str = str.Substring(n + 1);// 从那里分割 因为是0开始的使用所以+1 不然不完整
n = str.IndexOf('。'); // 。 在第几个字符
    str = str.Substring(0, n); //0开始 一直到 n个 也就是 “。”
  Console.WriteLine(str);  //输出

完整代码:

string  url = "http://time.tianqi.com/";         
  HttpWebRequest a = (HttpWebRequest)WebRequest.Create(url);                 
  HttpWebResponse b = (HttpWebResponse)a.GetResponse();
 using (Stream s = b.GetResponseStream()) {            
 using (StreamReader r = new StreamReader(s, Encoding.UTF8))
     {
   string str = r.ReadToEnd();              
 int n = str.IndexOf(':');
 str = str.Substring(n + 1);
   n = str.IndexOf('。');
  str = str.Substring(0, n);
 Console.WriteLine(str);
  }
   }

 Console.Read();

还是挺简单的 只有简单的几行

效果图:

纯手打,点个赞呗~

以上是关于C# 网络爬虫 抓取“北京标准时间“ 网页请求的主要内容,如果未能解决你的问题,请参考以下文章

C# 爬取 在线时间 设置 Windows系统时间

C# 爬取 在线时间 设置 Windows系统时间

如何用Python爬虫抓取网页内容?

java爬虫怎么抓取登陆后的网页数据

Python网络爬虫之网页抓取

怎么用VBA或网络爬虫程序抓取网站数据