C# 网络爬虫 抓取“北京标准时间“ 网页请求
很多時候需要使用到北京時間,例如一些簽到功能 過了24小時就可以簽到一次 如果直接獲取用戶本地時間 因為本機時間是可以自行修改的 這就造成非常大的BUG 當然也可以使用服務(wù)器本機的時間 看個人需求
效果圖:
在C#中已經(jīng)封裝好了兩個類
簡單介紹下
HttpWebRequest -主要用于模擬客戶端發(fā)送網(wǎng)絡(luò)請求
HttpWebResponse -用來接收服務(wù)器返回的數(shù)據(jù)
演示網(wǎng)站:北京時間
請求多了也并不會限制訪問
分析網(wǎng)頁源代碼:
上圖看出 時間在中上部
name=“description” content="天氣網(wǎng)時差頻道(time.tianqi.com)介紹中國北京時間,北京時間在線校準,北京現(xiàn)在時間:2021-09-18 -20:15:41。查世界各大城市時差,知最新時間,來天氣網(wǎng)時差頻道。
而在時間的兩邊有一個" : " 和一個 " 。 " 符號 且只有一個
時間剛剛好在中間 可以以這兩個符號為終點
代碼:
定義URL(也就是目標地址) :
string url = "http://time.tianqi.com/";也可以直接在 HttpWebRequest 的括號參數(shù)填寫都是字符串類型
發(fā)起請求:
HttpWebRequest a = (HttpWebRequest)WebRequest.Create(url);響應(yīng)請求:
HttpWebResponse b = (HttpWebResponse)a.GetResponse();返回的網(wǎng)頁源代碼 需要一個“流”進行接收
返回流:
using (Stream s = b.GetResponseStream()) using (StreamReader r = new StreamReader(s, Encoding.UTF8))StreamReaad-因流不能直接轉(zhuǎn)成字符,所以需要SreamRead進行轉(zhuǎn)換
第1個參數(shù):流
第2個參數(shù):字符編碼 如出現(xiàn)亂碼,看網(wǎng)頁編碼是否和你程序編碼對應(yīng)
using-因為文件流會消耗大量的資源 而文件流比較特殊 并不能被GC(垃圾回收) 給釋放 必須手動關(guān)閉 也可以使用using 關(guān)鍵字進行自動釋放
字符串分割:
因為只需要他的時間 返回的一大堆不需要的數(shù)據(jù) 使用就需要進行分割 把不要的字符全部過濾 可以使用 字符串的方法 或者 正則表達式 因為正則表達式不好定義 所以使用的字符串的方法
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();還是挺簡單的 只有簡單的幾行
效果圖:
純手打,點個贊唄~
總結(jié)
以上是生活随笔為你收集整理的C# 网络爬虫 抓取“北京标准时间“ 网页请求的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(663):逻辑中断逻辑与
- 下一篇: 前端学习(713)创建数组