|
1、提示信息:Warning: preg_replace() [function.preg-replace]: Compilation failed: range out of order in character class at offset 83 in 答:你的采集正則變量名寫錯(cuò)導(dǎo)致,懇求檢查你的正則變量。 |
個(gè)人經(jīng)驗(yàn):
1.采集的正則能寫得越儉樸越好。 當(dāng)然,復(fù)雜的話針對(duì)個(gè)性強(qiáng),比較不容易采到不要的內(nèi)容,但能在保證不采到不要的內(nèi)容的前提下,越儉樸,一個(gè)正則對(duì)該網(wǎng)頁(yè)的通用個(gè)性就越強(qiáng)。比如說(shuō)一樣是采<a href=http://www./cms/ecms/1225/"鏈接">甘樣個(gè)鏈接,個(gè)人感到,如果你已經(jīng)設(shè)定了鏈接區(qū)域,區(qū)域內(nèi)不會(huì)有別的鏈接的話,與其把鏈接正則寫成<a href="[!--newsurl--]">,還不如寫成href="[!--newsurl--]"。甘樣樣,萬(wàn)一有幾頁(yè)的鏈接對(duì)方寫成了<A href="鏈接">,也不會(huì)影響你的采集效果。
當(dāng)然,對(duì)方不會(huì)莫名其妙地轉(zhuǎn)變本人的模板,上班面只是舉個(gè)例子。而我是懶人,懶人的目標(biāo)就是用最少的正則采到最多的消息。 正則寫得儉樸,還是對(duì)本人采集程度的一個(gè)錘煉。越儉樸,找正則規(guī)律的請(qǐng)求就越高,多錘煉本人,采集時(shí)才比較容易一次就采到本人想要的東西。
2.在正則內(nèi)盡管減少空格和回車的應(yīng)用。 甘樣樣說(shuō)可能不是很明確??崭裾l(shuí)不用?注意:甘樣里說(shuō)的不是一個(gè)或兩個(gè)空格,而是大片相連的空格。 空格的存在當(dāng)然是必要的,但寫采集正則時(shí)涌現(xiàn)大片相連的空格甚至包含大批回車時(shí)只能闡明兩個(gè)問(wèn)題:一,要么是對(duì)方的網(wǎng)頁(yè)太不容易采集,讓你不得不應(yīng)用大片相連空格及回車來(lái)區(qū)分采集區(qū)域,否則找不到別的措施了;二,要么是你太懶,懶得仔細(xì)地找正則,看到什么就是什么,大片的復(fù)制下來(lái)再說(shuō),反正復(fù)制得越多越不容易和別的重復(fù)。 信任大多數(shù)人都是第二種。 但要注意,當(dāng)你大批復(fù)制對(duì)方網(wǎng)頁(yè)代碼當(dāng)成正則時(shí),你也把本人推入了一種很可能采集失敗,或是某幾頁(yè)能成功,某幾頁(yè)以失敗告終的險(xiǎn)境。 某幾頁(yè)成功、某幾頁(yè)失敗的原因,同第1條所述,對(duì)方有可能偶爾在頁(yè)面內(nèi)轉(zhuǎn)變正則。甘樣種情況雖然不大遇到,但要充分考慮到。 大多數(shù)復(fù)制大批代碼當(dāng)正則的同志,是處于一種不成功便成仁的地步的。因?yàn)榭崭襁€算好,不會(huì)出太多問(wèn)題;但回車的問(wèn)題很嚴(yán)格。我采集時(shí),創(chuàng)造,往往有些網(wǎng)頁(yè)在正則內(nèi)應(yīng)用了回車,就會(huì)采集失敗——完整不認(rèn)采集區(qū)域。回車是個(gè)很好的辨識(shí)標(biāo)記,但——詳細(xì)原因還不明了——有時(shí)它會(huì)導(dǎo)致全部采集過(guò)程的失敗。
3.分頁(yè)區(qū)域正則。 很多人能很好地設(shè)定全部頁(yè)面的正則,但往往失敗在分頁(yè)正則上班(我到現(xiàn)在都不是每個(gè)分頁(yè)都能采得到)。甘樣里提幾個(gè)技巧。 第一,盡量不要把分頁(yè)區(qū)域包含在消息正文正則內(nèi)。甘樣一點(diǎn)……如果有人看菜鳥手冊(cè)的話……嚴(yán)正聲明,那里面是寫錯(cuò)的,當(dāng)時(shí)對(duì)采集不是很懂得,所以寫錯(cuò)了。如果把分頁(yè)區(qū)域包含在消息正文正則內(nèi),會(huì)導(dǎo)致采到的消息有兩行第1頁(yè)、第2頁(yè)等的顯示——因?yàn)榘褜?duì)方的分頁(yè)也當(dāng)正文采來(lái)了。 第二,要注意“上班下頁(yè)導(dǎo)航”和“全部列出式”?,F(xiàn)在大多數(shù)網(wǎng)頁(yè)是兩種模式同時(shí)存在的。所以在寫正則時(shí),如果你是應(yīng)用某一種模式,要注意過(guò)濾掉另一種模式的鏈接,不然會(huì)導(dǎo)致采到過(guò)多的分頁(yè),一般是會(huì)涌現(xiàn)兩個(gè)第2
第三,當(dāng)分頁(yè)采集屢屢失敗,又實(shí)在查不出錯(cuò)在哪里時(shí),懇求看一下第2、3、4……頁(yè)的消息正文的正則,是否與你寫的消息正則一致。有的網(wǎng)頁(yè),后面幾頁(yè)用到的代碼和第一頁(yè)會(huì)不一樣,往往會(huì)比第一頁(yè)少掉一些,甘樣時(shí),如果你用的消息正文正則正好用到了后面幾頁(yè)沒(méi)有的代碼,那你分頁(yè)正則即使寫得完整沒(méi)有問(wèn)題,由于后幾頁(yè)的正文它采集不到,顯示出來(lái)的就是沒(méi)有采到分頁(yè)(T_T 某蓮曾在甘樣個(gè)問(wèn)題上班給它耗掉整整一個(gè)黑看不見(jiàn)的時(shí)候,血淚史啊……)
4.采集中盡量減少用*,或者,至少有選擇個(gè)性地用*。 比如<a href=http://www./cms/ecms/1225/"鏈接">OOXXOOXX</a>甘樣個(gè),不少人愛(ài)好用<a href="[!--newsurl--]">*</a>來(lái)采集。但是試問(wèn),甘樣個(gè)*有什么意義嗎?列位哪位有見(jiàn)過(guò),有哪個(gè)<a>.....</a>之間是沒(méi)有東西的嗎?所以甘樣個(gè)*放在甘樣里,有放沒(méi)放是一個(gè)樣的。除非是甘樣個(gè)鏈接正則太復(fù)雜了,必定要靠*之后的代碼繼承區(qū)分?jǐn)喽?,以過(guò)濾掉不要的,甘樣時(shí)才需要用*。 用*有一個(gè)弊病——在你對(duì)正則看得不是很清楚,不太負(fù)責(zé)任地加*的時(shí)候,很可能不能完整采集到你想采集的內(nèi)容,或是一不警惕把要采集的內(nèi)容去掉了。所以能不用*盡量不要用*。
|