有一些瑕疵沒時(shí)間細(xì)化,只是實(shí)現(xiàn)了效果,大家看一看這個(gè)正則該怎么寫好:
URL:http://news.szhome.com/83642.html
內(nèi)容:
復(fù)制代碼 代碼如下:
object>/div>/div>
/div>
div class="share">div class="linkshare" style="right: 0">
這兩個(gè)標(biāo)記之間的代碼。END標(biāo)記的問題解決了,但是郁悶的是START截取的標(biāo)記因?yàn)榈诙€(gè)DIV和第三個(gè)中間有換行,我無語了不知道怎么處理這個(gè)正則。
而且郁悶的是有多處有這種重復(fù)型標(biāo)記,對(duì)正則不太熟悉,我的解決方法如下:
復(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));
}
我算出截取出來多處兩個(gè)FLASH廣告DIV的長度是1933,然后處理字符串截取后得到我想要的文本,這樣做的劣勢(shì)就是萬一該站改變了兩個(gè)FLASH廣告DIV的長度我獲取的數(shù)據(jù)就不是完整的呢,有興趣的研究下,看看換行的DIV正則問題怎么處理。
里面用到了自己寫的一個(gè)BUTTON控件,可以在點(diǎn)擊后禁止重復(fù)點(diǎn)擊,然后就是一些判斷,在思路上蠻不錯(cuò),可以做到一直抓取,因?yàn)椴唤?jīng)常用就沒做成WINDOWS服務(wù)類型,這樣的程序可以做成WINDOWS服務(wù),把規(guī)則寫在INI文件中,抓錄的規(guī)則和正則也放在配置文件中,這樣就能實(shí)現(xiàn)自動(dòng)抓錄。
很短的代碼,對(duì)這種抓錄有興趣的朋友可以嘗試下。下載