隨手正則寫的 CSDN【只看樓主】功能
寫這個的時候居然沒有看到原來CSDN已經有這個功能了,寫完程式碼了突然發現原來早就已經有了。
截圖:
呵呵,起碼還能看吧@——#
1 private void button1_Click(object sender, EventArgs e) 2 { 3 if (!string.IsNullOrEmpty(txtCsdnUrl.Text.Trim())) 4 { 5 string url = txtCsdnUrl.Text.Trim(); 6 stringhtmlSource = string.Empty; 7 htmlSource = GetHtmlSource(url); 8 int pageCount = GetPageCount(htmlSource); 9 string context = string.Empty; 10 11 if (pageCount > 1) 12 { 13 for (inti = 1; i <= pageCount; i++) 14 { 15 htmlSource = GetHtmlSource(url + "?page=" + i); 16 17 context+= GetLZArticle(htmlSource); 18 } 19 } 20 else 21 {22 context += GetLZArticle(htmlSource); 23 } 24 25 richTextBox1.Text = context; 26 27 } 28 else 29 { 30 MessageBox.Show("請輸入地址"); 31 } 32 } 33 34 /// <summary> 35 /// 獲取原始碼 36 /// </summary> 37 /// <param name="Url"></param> 38 /// <returns></returns> 39 public string GetHtmlSource(string Url) 40 { 41 WebClient client = new WebClient(); 42 client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 43 Stream data = client.OpenRead(Url); 44 string result = string.Empty; 45 using (StreamReader reader = new StreamReader(data, Encoding.UTF8)) 46 { 47 result = reader.ReadToEnd(); 48 } 49 50 return result; 51 } 52 53 /// <summary> 54 /// 獲取貼子總頁數 URL格式:http://bbs.csdn.net/topics/390730011?page=2 55 /// </summary> 56 /// <returns>返回最大頁數</returns> 57 public int GetPageCount(string HtmlSource) 58 { 59 int pageCount = 0; 60 61 Regex reg = new Regex("<select class=\"jumpMenu\" name=\"jumpMenu\">(?<val>.*?)</select>", RegexOptions.Singleline | RegexOptions.IgnoreCase); 62 string htmlSource = HtmlSource; 63 Regex reg1 = new Regex("<option.*?>(?<val>.*?)</option>", RegexOptions.Singleline | RegexOptions.IgnoreCase); 64 int count = reg1.Matches(reg.Match(htmlSource).Groups["val"].Value).Count; 65 66 int.TryParse(reg1.Matches(reg.Match(htmlSource).Groups["val"].Value)[count - 1].Groups["val"].Value, 67 out pageCount); 68 69 return pageCount; 70 } 71 72 /// <summary> 73 /// 獲取文章標題 74 /// </summary> 75 /// <param name="HtmlSource">網頁內容</param> 76 /// <returns></returns> 77 public string GetArticleTitle(string HtmlSource) 78 { 79 string title = string.Empty; 80 81 Regex reg = new Regex("<span class=\"title text_overflow\">(?<title>.*?)</span>", RegexOptions.Singleline | RegexOptions.IgnoreCase); 82 83 title = reg.Match(HtmlSource).Groups["title"].Value; 84 85 return title; 86 } 87 88 89 public string GetAuthorName(string HtmlSource) 90 { 91 string result = string.Empty; 92 93 Regex regex = new Regex("<a class=\"p-author\" href=\"#\">(?<value>.*?)</a>"); 94 95 result = regex.Match(HtmlSource).Groups["value"].Value; 96 97 return result; 98 } 99 100 public string GetLZArticle(string HtmlSource) 101 { 102 103 string result = string.Empty; 104 string authorName = GetAuthorName(HtmlSource); 105 106 Regex regex = new Regex("<td valign=\"top\" class=\"post_info .*?\" data-username=\"" + authorName + "\".*?>.*?<div class=\"post_body\">(?<value>.*?)</div>.*?</td>", RegexOptions.Singleline | RegexOptions.IgnoreCase); 107 108 for (int i = 0; i < regex.Matches(HtmlSource).Count; i++) 109 { 110 result += regex.Matches(HtmlSource)[i].Groups["value"].Value; 111 result += "--------------------分隔線--------------------"; 112 } 113 return result.Trim().Replace("<br />","\r\n"); 114 }
程式碼都在這裡了。
相關推薦
隨手正則寫的 CSDN【只看樓主】功能
寫這個的時候居然沒有看到原來CSDN已經有這個功能了,寫完程式碼了突然發現原來早就已經有了。 截圖: 呵呵,起碼還能看吧@——# 1 private void button1_Click(object sender, EventArgs e) 2 { 3
常用的正則表示式整理【轉載,防丟失】
轉載文章,好資源,防丟失。原文連結: http://blog.cspojie.cn/2017/09/26/常用的正則表示式整理/ 一、校驗數字的表示式 1 數字: ^[0-9]$ 2 n位的數字: ^\d{n}$ 3 至少n位的數字: ^\d{n,}$ 4 m-n位的數字:^
1000行程式碼徒手寫正則表示式引擎【1】--JAVA中正則表示式的使用
簡介: 本文是系列部落格的第一篇,主要講解和分析正則表示式規則以及JAVA中原生正則表示式引擎的使用。在後續的文章中會涉及基於NFA的正則表示式引擎內部的工作原理,並在此基礎上用1000行左右的JAVA程式碼,實現一個支援常用功能的正則表示式引擎。它支援貪婪匹配和懶惰匹配;支援零寬度字元(如“\b”, “\B
正則表達式【範圍性匹配】
bsp com pre www. find compile 轉義 什麽 sna 1、 import re key = r"<html><body><h1>hello world<h1></body></ht
正則表達式【基礎】
因此 tab 出現 字符 字母 app bbc 正則表達 abc /abc/ 雙斜桿表示裏面是正則表達式 在awk中使用方法:awk ‘/a.c/{print $0}‘ data.txt .和\ awk ‘/a.c/{print $0}‘ data.txt 使用a.c
js中的正則表達式【常用】
除了 att res return 開頭 貪婪 字母 字符串匹配 func 正則表達式是一種用於處理字符串匹配的強大工具,正則的核心在於匹配語法。 以下是常用的匹配規則 . 除了換行符之外的任意一個字符 \ 轉義符,取消後面一個字符的含義,使其成為一
js正則表示式驗證字串只包括大小寫字母下劃線和-
背景說明 在之前的開發過程中為了校驗一個欄位只含有大小寫字母,下劃線和-花費了不少力氣才搞定,想著趕快寫一篇部落格來記錄下來,日後開發一定會遇到!! 程式碼實現 首先定義一個變數用來存放驗證字串的正則表示式:var regex=/^[A-Za-z0-9_\-]+$/ig;
[番外]:帶你玩正則1--資料遍地是,看你取不取
謹言:正則沒有捷徑,唯一法可破,多想,多用,再多想,再多用 最近想做個Android資源庫:toly_res開源庫,將一些常用字串和res資源收錄進去 所以找些字串練練手,做個資源儲備,順便磨一下我正則這把鏽跡斑斑的刀 正則的基礎知識我就不羅嗦了,一些常用符號不懂的可以自己查一查。 本文將用四個小例子
Javascript正則表示式筆錄【2】
文章目錄 方形括號的用法 示例-禁止在表單中輸入非字母 預定義類 邊界符匹配示例 量詞 量詞 * 示例 量詞 + 示例
Javascript正則表示式筆錄【1】
關於 量詞/元字元等用法見 Javascript正則表示式筆錄【2】 文章目錄 新建正則表示式的方法 全域性匹配時需要引入額外選項 'g' 匹配多行時需要引入選項'm',同時還要引入'g' 使用正則表示式查詢字串中
jquery正則表示式驗證【是否帶有小數、是否中文名稱組成、是否全由8位數字組成、電話碼格式、郵件地址】
1 <form name="myform" action="" onsubmit="return fun1()"> 2 <div align="center"> 3 <table border="1" width="60%" > 4 <tr>
Hadoop去掉格,換行符,製表符,回車符,換頁符【好吧,其實用正則表示式一下子就搞定了】
第一步:將文件中的空格,換行符(\n),製表符(\t),回車符(\n),換頁符(\f)去掉 這時候可以採用兩種方法 1.使用Hadoop將文字以預設的分隔符(空格,換行符,製表符,回車符,換頁符)進行分割,並將分割後的字串直接輸出,這樣子新的文件中將不包括這些分隔符。 /
js 的正則表達式 部分展示test()方法的驗證功能
color run 展示 var 表達式 meta 驗證 regex 菜鳥 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(r
【實戰】Amoeba 代理 MySQL 主從復制 + 讀寫分離 【提供源碼包】
system 導數據 ant 代理服 數據庫實例 切分 creat 生效 啟動服務 目錄簡介: 1· Amoeba 的介紹2· MySQL 主從復制原理3· MySQL 讀寫分離原理4· 實戰案例5· 總結歸納 Amoeba 的介紹 1)Amoeba 是什麽: 1
用 mpvue 寫個【微博-青銅版】微信小程式
第一次寫小程式,由於偏愛 Vue,所以選則了 mpvue 這個框架。那就寫個青銅版微博來練練手吧。 效果截圖: 圖1:微博首頁 圖2:發微博 圖3:我的 技術要點 1、小程式框架:mpvue 2、http 請求庫:fly.js 3、狀態管理:vuex 4、資料來源:微博開放平臺 ap
1000行代碼徒手寫正則表達式引擎【1】--JAVA中正則表達式的使用
基礎上 unicode 要求 [1] 分配 find 通過 images char 簡介: 本文是系列博客的第一篇,主要講解和分析正則表達式規則以及JAVA中原生正則表達式引擎的使用。在後續的文章中會涉及基於NFA的正則表達式引擎內部的工作原理,並在此基礎上用1000行左右
【爬蟲入門】【正則表示式】【Json】抓取CSDN最新文章
爬取csdn文章的JSON資料 資料庫分為關係型資料庫和關係型資料庫,關係型資料庫需要通過建立表與表之間的關係來進行資料的儲存和查詢,比如一對一、一對多、多對多關係,表與表之間的關係比較緊密。而非關係型資料庫中,表與表之間是不存在關聯的,每一個表都是獨立儲存資料的。 mongodb屬於非
學習源碼第四天(昨天只看了一點正則,發現正則真的水很深,但很有魅力)
也有 才會 sch col text 方式 tex nodetype 遍歷 第三天主要對match的值做了一個判斷 match[1]要麽是標簽字符串,要麽macth就是null 像<li>、<li>11都轉成‘li‘作為match[1]
【Python】正則表達式1(未完)
pes mmu get regular rop 則表達式 line out github 1、正則表達式唯一的用途就是在文本中匹配和尋找模式,模式可以簡單,也可以復雜。 2、Regexr 這個網站很個性的就是,有一個community標簽,打開後可以看到評分由高到低
【轉】js中15個常用的正則表達式
顏色 字符 8.4 特殊字符 cnp 浮點數 == div mail 1 用戶名正則 //用戶名正則,4到16位(字母,數字,下劃線,減號) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 true console.log(uPa