正則方式的自動小偷抓網(wǎng)程序
更新時間:2011年11月21日 19:01:37 作者:
公司里面有許多數(shù)據(jù)沒人去錄入,做一個抓取網(wǎng)頁的程序,以前做CMS系統(tǒng)的時候涉及過,不過這次的處理HTML上和以前做了些區(qū)別
有一些瑕疵沒時間細化,只是實現(xiàn)了效果,大家看一看這個正則該怎么寫好:
URL:http://news.szhome.com/83642.html
內(nèi)容:
object></div></div>
</div>
<div class="share"><div class="linkshare" style="right: 0">
這兩個標(biāo)記之間的代碼。END標(biāo)記的問題解決了,但是郁悶的是START截取的標(biāo)記因為第二個DIV和第三個中間有換行,我無語了不知道怎么處理這個正則。
而且郁悶的是有多處有這種重復(fù)型標(biāo)記,對正則不太熟悉,我的解決方法如下:
MatchCollection mc = Regex.Matches(ghoPage.Trim(), @"(?<=<div class=['""]txtmsg['""]>)[\s\S]*?(?=<div class=['""]share['""]><div class=)", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
foreach (Match mm in mc)
{
sb.Append(mc[0].Value.Substring(1933, mc[0].Value.Length - 1933));
}
我算出截取出來多處兩個FLASH廣告DIV的長度是1933,然后處理字符串截取后得到我想要的文本,這樣做的劣勢就是萬一該站改變了兩個FLASH廣告DIV的長度我獲取的數(shù)據(jù)就不是完整的呢,有興趣的研究下,看看換行的DIV正則問題怎么處理。
里面用到了自己寫的一個BUTTON控件,可以在點擊后禁止重復(fù)點擊,然后就是一些判斷,在思路上蠻不錯,可以做到一直抓取,因為不經(jīng)常用就沒做成WINDOWS服務(wù)類型,這樣的程序可以做成WINDOWS服務(wù),把規(guī)則寫在INI文件中,抓錄的規(guī)則和正則也放在配置文件中,這樣就能實現(xiàn)自動抓錄。
很短的代碼,對這種抓錄有興趣的朋友可以嘗試下。下載
URL:http://news.szhome.com/83642.html
內(nèi)容:
復(fù)制代碼 代碼如下:
object></div></div>
</div>
<div class="share"><div class="linkshare" style="right: 0">
這兩個標(biāo)記之間的代碼。END標(biāo)記的問題解決了,但是郁悶的是START截取的標(biāo)記因為第二個DIV和第三個中間有換行,我無語了不知道怎么處理這個正則。
而且郁悶的是有多處有這種重復(fù)型標(biāo)記,對正則不太熟悉,我的解決方法如下:
復(fù)制代碼 代碼如下:
MatchCollection mc = Regex.Matches(ghoPage.Trim(), @"(?<=<div class=['""]txtmsg['""]>)[\s\S]*?(?=<div class=['""]share['""]><div class=)", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
foreach (Match mm in mc)
{
sb.Append(mc[0].Value.Substring(1933, mc[0].Value.Length - 1933));
}
我算出截取出來多處兩個FLASH廣告DIV的長度是1933,然后處理字符串截取后得到我想要的文本,這樣做的劣勢就是萬一該站改變了兩個FLASH廣告DIV的長度我獲取的數(shù)據(jù)就不是完整的呢,有興趣的研究下,看看換行的DIV正則問題怎么處理。
里面用到了自己寫的一個BUTTON控件,可以在點擊后禁止重復(fù)點擊,然后就是一些判斷,在思路上蠻不錯,可以做到一直抓取,因為不經(jīng)常用就沒做成WINDOWS服務(wù)類型,這樣的程序可以做成WINDOWS服務(wù),把規(guī)則寫在INI文件中,抓錄的規(guī)則和正則也放在配置文件中,這樣就能實現(xiàn)自動抓錄。
很短的代碼,對這種抓錄有興趣的朋友可以嘗試下。下載
相關(guān)文章
手把手教你AspNetCore WebApi數(shù)據(jù)驗證的實現(xiàn)
這篇文章主要介紹了手把手教你AspNetCore WebApi數(shù)據(jù)驗證的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
asp.net中的“按需打印”(打印你需要打印的部分) 實現(xiàn)代碼
有時我們需要對asp.net網(wǎng)頁中某些特定部分進行打印,很多人采用CSS樣式或特定的打印控件來解決網(wǎng)頁定制打印功能。這里采用Javascript樣式替換方式進行打印,使網(wǎng)頁顯示與打印效果相分離。2013-06-06
12306動態(tài)驗證碼啟發(fā)之ASP.NET實現(xiàn)動態(tài)GIF驗證碼(附源碼)
這篇文章主要介紹了受到12306動態(tài)驗證碼啟發(fā),實現(xiàn)ASP.NET動態(tài)GIF驗證碼,需要的朋友可以參考下2015-08-08
Win7安裝Visual Studio 2015失敗的解決方法
這篇文章主要為大家詳細介紹了Win7安裝Visual Studio 2015失敗的解決方案,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
如何在Asp.Net Core MVC中處理null值的實現(xiàn)
這篇文章主要介紹了如何在Asp.Net Core MVC中處理null值的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
sql server中批量插入與更新兩種解決方案分享(asp.net)
xml和表值函數(shù)的相對復(fù)雜些這里簡單貼一下bcp和SqlDataAdapter進行批量跟新插入方法,未經(jīng)整理還望見諒2012-05-05

