成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

利用正則表達(dá)式抓取博客園列表數(shù)據(jù)

鑒于我在要完成的asp.net MVC 3 仿照博客園企業(yè)系統(tǒng)要用到測試數(shù)據(jù),我自己輸入太累,所以我就抓取了博客園的部分列表數(shù)據(jù),還請dudu不要見怪。

在抓取博客園數(shù)據(jù)的時(shí)候采用了正則表達(dá)式,所以有不熟悉正則表達(dá)式的朋友可以參考相關(guān)資料,其實(shí)很容易掌握,就是在具體的實(shí)例中會花些時(shí)間。

現(xiàn)在我就來把我抓取博客園數(shù)據(jù)的過程敘述一下,如果有朋友有更好的意見,歡迎提出來。

要使用正則表達(dá)式抓取數(shù)據(jù),首先就要創(chuàng)建一個(gè)正則表達(dá)式進(jìn)行匹配,我推薦使用regulator,這個(gè)正則表達(dá)式工具,我們可以先使用這個(gè)工具把我們要使用的正則表達(dá)式拼接出來,然后在程序中使用。

我發(fā)現(xiàn)博客園的首頁列表可以通過http://www.cnblogs.com/p1,p2…這種方式來直接訪問,這樣我們就可以直接通過url獲取數(shù)據(jù),而不用模擬數(shù)據(jù)點(diǎn)擊事件來虛擬的點(diǎn)擊下一頁的那個(gè)按鈕獲取數(shù)據(jù),更加方便。因?yàn)槲业哪康木褪亲ト∫恍?shù)據(jù),所以就簡單點(diǎn)。

1.首先就是要寫對應(yīng)的sql Helper類,相信這是很多程序員都會掌握的,無非就是增刪改查的操作。在創(chuàng)建好了sqlhelper類之后,我們就可以開始進(jìn)行抓取數(shù)據(jù)的邏輯處理。

2.創(chuàng)建BlogRegexController

  public class BlogRegexController : Controller     {       public void ExecuteRegex()       {         string strBaseUrl = "http://www.cnblogs.com/p"; //定義博客園可以訪問的列表數(shù)據(jù)的基地址         for (int i = ; i <= ; i++)//因?yàn)椴┛蛨@首頁列表最大只有頁,所以我們這個(gè)循環(huán)就執(zhí)行次         {           string strUrl = strBaseUrl + i.ToString();           BlogRege blogRegex = new BlogRege(); //定義的具體的Regex類 抓取博客園地址           string result = blogRegex.SendUrl(strUrl);           blogRegex.AnalysisHtml(result);              Response.Write("獲取成功");         }       }          //       // GET: /BlogRegex/          public ActionResult Index()       {         ExecuteRegex();         return View();       }        }

在controller中的ExecuteRegex()方法就是執(zhí)行抓取博客園列表數(shù)據(jù)的功臣。

3.首先就是其中定義的BlogRege類,他負(fù)責(zé)抓取博客園列表數(shù)據(jù)并將其插入到數(shù)據(jù)庫中

  public class BlogRege     {   //負(fù)責(zé)把數(shù)據(jù)插入到數(shù)據(jù)庫中 使用到的是sqlhelper類       public void Insert(string title, string content,string linkurl, int categoryID = )       {         SqlHelper helper = new SqlHelper();         helper.Insert(title, content, categoryID,linkurl);       }       /// <summary>       /// 通過Url地址獲取具體網(wǎng)頁內(nèi)容 發(fā)起一個(gè)請求獲得html內(nèi)容       /// </summary>       /// <param name="strUrl"></param>       /// <returns></returns>       public string SendUrl(string strUrl)       {         try         {           WebRequest webRequest = WebRequest.Create(strUrl);           WebResponse webResponse = webRequest.GetResponse();           StreamReader reader = new StreamReader(webResponse.GetResponseStream());           string result = reader.ReadToEnd();           return result;         }         catch (Exception ex)         {           throw ex;         }       }       /// <summary>       /// 分析Html 解析出里面具體的數(shù)據(jù)       /// </summary>       /// <param name="htmlContent"></param>       public void AnalysisHtml(string htmlContent)       {//這個(gè)就是我在regulator正則表達(dá)式工具中拼接獲取到的正則表達(dá)式 還有一點(diǎn)請注意就是轉(zhuǎn)義字符的問題         string strPattern = "<div\s*class="post_item">\s*.*\s*.*\s*.*\s*.*\s*.*\s*.*\s*.*\s*<div\s*class="post_item_body">\s*<h><a\s*class="titlelnk"\s*href="(?<href>.*)"\s*target="_blank">(?<title>.*)</a>.*\s*<p\s*class="post_item_summary">\s*(?<content>.*)\s*</p>";         Regex regex = new Regex(strPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant);         if (regex.IsMatch(htmlContent))         {           MatchCollection matchCollection = regex.Matches(htmlContent);           foreach (Match match in matchCollection)           {             string title = match.Groups[].Value;//獲取到的是列表數(shù)據(jù)的標(biāo)題             string content = match.Groups[].Value;//獲取到的是內(nèi)容             string linkurl=match.Groups[].Value;//獲取到的是鏈接到的地址            Insert(title, content,linkurl);//執(zhí)行插入到數(shù)據(jù)庫的操作           }         }       }     }

4.通過上面的代碼我們可以很輕松的從博客園中獲取我們用來測試的數(shù)據(jù),方便快捷,而且真實(shí),比我們手動輸入的速度要快很多。

正則表達(dá)式其實(shí)不應(yīng)該算是一種語言,只能算是一種語法,因?yàn)槿魏蔚恼Z言包括C#,javascript等語言都對正則表達(dá)式有很好的支持,只是他們的使用語法稍有不同,其實(shí)只要我們可以正確的拼接出正則表達(dá)式,那么我們抓取任何網(wǎng)站的內(nèi)容都可以很輕松的做到。前一段我試著抓取了淘寶的數(shù)據(jù),一共抓取了有幾百萬條,我想應(yīng)該還有很多沒有抓取到,不得不佩服淘寶,數(shù)據(jù)量太大。

回到我們使用的C#語言上,其實(shí)對正則表達(dá)式也有著非常好的支持,Regex就是用來對正則表達(dá)式進(jìn)行操作的類,所有的對正則表達(dá)式的操作都在這個(gè)類中。

如果你對正則表達(dá)式還不是太熟悉,網(wǎng)上有一篇正則表達(dá)式30分鐘入門教程,大家可以參考一下,寫的很不錯。再加上使用一個(gè)正則表達(dá)式工具,相信可以抓取到任何你想的內(nèi)容。

在拼接正則表達(dá)式的時(shí)候,可能會花費(fèi)很長時(shí)間,畢竟要分析html結(jié)構(gòu),從中抓取內(nèi)容。希望大家可以沉住氣,因?yàn)橹灰齽t表達(dá)式拼接正確,那么一定可以抓取正確的內(nèi)容。

為了避免大家說只說不做,那么我就把我抓取的博客園首頁內(nèi)容秀一下,因?yàn)椴┛蛨@首頁數(shù)據(jù)會有更新,所以大家可以看到這些數(shù)據(jù)都是在博客園中順序存在的。

利用正則表達(dá)式抓取博客園列表數(shù)據(jù)

博客園每頁列表是20條,一共200頁,所以一共是4000條。數(shù)據(jù)抓取正確。

我以前說過,只是會代碼的程序員不一定是合格程序員,程序員應(yīng)該盡可能的減少自己的工作量,因?yàn)槲覀兌际歉咧巧痰娜恕K晕覀儜?yīng)該積極的學(xué)習(xí)各種對我們的工作有幫助的框架或者是方法,比如IOC、Entity Framework或Nhibernate框架來減輕我們開發(fā)維護(hù)代碼的負(fù)擔(dān),畢竟我們聽到需求要更改的反映,一般都是憤怒,然后大罵,最后才是修改。有些框架能夠幫助我們,給我們維護(hù)代碼帶來好心情,何樂而不為呢。

我最后說一句,因?yàn)槲乙_發(fā)一個(gè)簡單的仿照博客園的網(wǎng)站(MVC3),所以會用到各種技術(shù)準(zhǔn)備,我提前寫出來把這些要用到的內(nèi)容整理一下,為以后的開發(fā)加速。

下一次,我準(zhǔn)備整理一下在MVC中使用文本編輯器KindEditor的方法,希望大家如果有好的意見或者資料可以提供一下,讓我也增加一些見識。謝謝各位

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久伊人精品一区二区三区| 影音先锋手机AV资源站| 精品亚洲国产AⅤ在线| 亚洲AV无码乱码在线观看代蜜桃| 欧美巨大巨粗黑人性AAAAAA| 天天躁日日躁狠狠躁欧美老妇小说| 亚洲国产美女精品久久久久∴| 97在线视频免费人妻| 国产精品VA在线观看无码 | 色老汉亚洲AV影院天天| 亚洲欧美丝袜 动漫专区| 暴行JAPANESE人妻| 娇妻在我面前被黑人撑爆| 人妻人人澡人人添人人爽人人玩| 亚洲AV中文无码| 宝贝腿开大点我添添公视频免费| 狠狠躁日日躁夜夜躁2020| 人人妻人人澡人人爽不卡视频| 亚洲成AV人在线观看| S货叫大点声C烂你的SB| 极品少妇被啪到呻吟喷水| 日本大片免费观看视频| 亚洲永久无码7777KKK| 公交车上拨开丁字裤进入| 狼友AV永久网站免费观看武| 四虎AV永久在线精品免费观看| 伊人久久大香线蕉成人| 国产精品无码素人福利| 欧美性激烈粗大精品XXX| 亚洲欧洲日产国码无码| 公交车最后一排被C| 美日韩在线视频一区二区三区| 无遮挡粉嫩小泬女视频| WBBBB搡BBBB搡BBBB| 久久97人妻AⅤ无码一区| 熟悉妇人妻av无码毛片| 95W乳液78WYW永久区域| 日本少妇人妻XXXXX18免费| 特级西西WWW444人体聚色| 亚洲日产韩国一二三四区| 野花高清在线观看免费官网中文版| 国产在线精品一区二区三区直播| 亚洲香蕉成人AV网站在线观看| 亚洲一区二区女搞男| 野花日本免费完整版高清版 | 亚洲AV无码乱码精品观看| CHINAGARY武警体育飞机| 精品人妻少妇一区二区三区夜夜嗨 | 无码人妻精品丰满熟妇区| AV无码中文一区二区三区四区| 后进式疯狂摇乳无遮挡GIF| 少妇人妻大乳在线视频不卡| 稚嫩的花苞被老师开了| 精品国内自产拍在线观看视频| 玩弄JAPAN白嫩少妇HD| 宝宝湿透了还嘴硬怎么回事| 美女裸身裸乳免费视频的APP| 亚洲国产精品久久久久蜜桃| 国产精品白丝无码ThePorn| 人与牲动ZZZXXXⅩ0000| 真人作爱90分钟免费看视频| 精品久久久久久中文字幕人妻最新| 无码人妻丰满熟妇奶水区毛片| 成人片黄网站色大片免费观看AP | 性色A∨亚洲一区二区三区| 成熟丰满熟妇自慰XXXXX| 男女啪啪激烈高潮喷出GIF免费| 亚洲熟妇无码乱子AV电影| 国语对白露脸XXXXXX| 午夜无码乱码在线观看| 国产成人无码18禁午夜福利网址| 日产乱码一二三区别免费观看 | 色婷婷粉嫩AV精品综合在线| 啊灬啊灬啊灬快灬高潮了视频网站 | 女女互磨互喷水高潮LES呻吟| 野花香视频在线观看免费高清版| 黑人狂虐中国人妻陈艳| 小SAO货都湿掉奶头好硬男女 | 小东西才几天没做喷的到处都是 | 精品乱码一卡2卡三卡4卡二卡| 亚洲AⅤ无码专区在线观看Q| 人妻丰满熟妇av无码久久洗澡| 亚洲日本一本DVD高清| 韩国三级日本三级美三级| 午夜131美女爱做视频| 国产老妇女婬片A级毛片| 无码人妻精品一区二区蜜桃不卡| 国产成人无码AⅤ片在线观看视频 国产成人无码AⅤ片在线观看你 | 国产肉体XXXX裸体137大胆| 日韩AV人人夜夜澡人人爽| JAPANESE国产永久| 夜夜添无码一区二区三区| 被两个老头咬住吃奶野战| 精品无码一区二区三区亚洲桃色 | 国产爆乳无码福利电影| 老男人久久青草AV高清| 铜铜铜铜铜铜铜铜好大好硬| 最新版天堂资源网在线种子| 含苞待放1ⅤLH花莹莹| 日韩精品少妇无码受不了| 在线观看草莓视频MV的免费网站| 国产在线乱子伦一区二区| 特级欧美ZOOXX| 综合 欧美 小说 另类 图| 浪货趴办公桌~H揉秘书| 唔嗯啊欧美一级作爱网站| 波多野结衣AV影音先锋| 孽火(硬汉)今又| 四虎影视成人永久免费观看视频| 24种男女插秧法| 久久久久久精品免费免费WEI| 亚洲国产成人片在线观看无码| 亚洲AV无码专区亚洲AV不卡| 中国熟妇牲交视频| 男女车车的车车网站W98免费| A三级三级成人网站在线视频| 欧美成人少妇人妻精品视频 | 自拍偷自拍亚洲精品10P| 男人女人做爽爽18禁网站| YY111111少妇影院理论片| 日韩A无V码在线播放| 国产SM调教视频在线观看| 香港三级日本三级A视频| 精产国品一二三产区区别在线观看 | 欧美XXXX做受视频| 不知火舞和三个小男孩| 同桌上课脱裙子让我帮他自慰| 国产亚洲欧美日韩亚洲中文色 | 亚洲AV素人乱码| 久久久久久精品成人网站蜜臀 | 久久久WWW成人免费精品| 131美女爱做视频国产福利| 人妻丰满被色诱中文字幕| 国产VIDEOSSEX精品| 亚洲AV无码成人精品涩涩 | 亚洲 无码 国产精品| 久久九九久精品国产综合一千收藏| 中文字幕乱码亚洲∧V日本| 人禽伦免费交视频播放| 国产精品久久久久9999赢消| 亚洲国产成人一区二区精品区| 麻花传媒MV一二三区别在哪里看| 锕锕锕锕锕锕好大好深APP| 玩弄三个高大的熟妇| 久久99成人精一区二区三区| 99久久国产综合精品五月天喷水| 少妇ⅩXXOOOZZXXHD| 国产做床爱无遮挡免费视频| 在线天堂网WWW天堂在线| 日本国产一区二区三区在线观看| 国产精品自在线拍国产手机版| 亚洲综合网国产精品一区| 欧美最猛性XXXXX免费| 国产精品久久久久AV福利动漫| 亚洲一区精品人人爽人人躁| 人妻AV综合天堂一区| 国产女人18毛片水真多18精品| 一二三四免费BD高清视频| 日本农村大姐RAPPER| 黑人精品一区二区三区| 97夜夜澡人人双人人人喊| 中国 韩国 日本 免费看| 肉欲扒灰合集100篇| 精品日产卡一卡二卡927| WWW国产精品内射熟女| 亚洲AV成人精品日韩一区18p| 免费看美女被靠到爽的视频| 国产边做饭边被躁在线播放91| 亚洲中字慕日产2020| 色欲色AV免费观看| 久久久久久精品免费免费英国| 成人丝袜激情一区二区| 亚洲乱码1卡2卡3乱码在线芒果| 强行入侵粗暴完整版| 国色天香精品一卡2卡3卡老狼| 99精品国产一区二区三区| 无码天堂亚洲国产AV麻豆| 免费AV片大尺度在线观看| 国产精品免费一区二区三区四区 | 婷婷五月六月综合缴情| 久久亚洲熟妇熟女ⅩXXXHD| 丰满人妻妇伦又伦精品App抖| 亚洲国产精品久久久天堂麻豆宅男| 秋霞电影院午夜无码中文| 精品国产乱码久久久久久郑州公司| 被多男摁住灌浓精| 亚洲日韩高清AⅤ在线观看| 日日摸夜夜添夜夜添视频| 久久久精品国产免大香伊| 国产成人a在线看片色欲AV| 主人调教下贱的烂货| 性高湖久久久久久久久| 强开小婷嫩苞又嫩又紧视频| 精品久久久久久中文字幕无码软件 | 少妇MM被擦出白浆液视频| 久久中文字幕人妻丝袜系列| 国产好深好硬好想要免费视频 | JULIA无码中文字幕一区| 亚洲欧美偷国产日韩| 手机在线永久免费观看AV片|