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