在開發專案的過程,很多情況下我們需要利用網際網路上的一些資料,在這種情況下,我們可能要寫乙個爬蟲來爬我們所需要的資料。一般情況下都是利用正規表示式來匹配html,獲取我們所需要的資料。一般情況下分以下三步:
1、獲取網頁的html
2、利用正規表示式,獲取我們所需要的資料
3、分析,使用獲取到的資料,(例如,儲存到資料庫)
接下來我們分析**:
1、獲取網頁的html
對於一些網頁,不需要提交post提交資料時,我們可以簡單的利用nsurl類來獲取我們所需要的html,交將其轉換中kcfstringencodinggb_18030_2000格式,解決中文亂碼問題。
+(nsstring*) urlstring:(nsstring*)strurl
對於需要post提交資料的網頁,我們可以利用強大的asiformdatarequest類來實現,例如:
+(void)getpostresult:(nsstring*)startqi
else }
這樣的話,我們就通過了兩種方式獲取了我們所需要的html
2、分析html
關於利用正規表示式匹配問題,我又對nsstring類擴充套件了乙個方法-(nsmutablearray *)substringbyregular:(nsstring *)regular。根據傳入的正規表示式,返回所有匹配的陣列。
@implementation nsstring(stringregular)
-(nsmutablearray *)substringbyregular:(nsstring *)regular }
return arr; }
@end
在這種情況下,我們首先我得到我們要獲取資料的正規表示式,關於正規表示式這種火星文我就不多說了,我也很糾結,我就不多說了,但是有一點就是,所寫的正規表示式一定是我們所需要的資料,並且能夠遮蔽無效資訊的,有可能在一次匹配中無法獲取,可以多次利用正規表示式來分段獲取。下面是我的語句,在我的例子中,就是兩次利用正規表示式。
nsstring *regstr = @"\\w
(\\w\\s)*";
nsmutablearray *arr=[strhtml substringbyregular:regstr];
if (arr!=nil&&[arr count]>0) ";
nsstring *backreg=@"(\\w\\s)";
ticketresultservice *service=[[ticketresultservice alloc] init];
[[sqlite3helper instance] opendb];
for (nsstring *sub in arr)
else
nsmutablearray *backarr=[sub substringbyregular:backreg];
if (backarr!=nil&&[backarr count]>0)
else
if([service i***ist:r.sectionid])
r.type=[nsnumber numberwithint:1];
[service addmodel:r]; }
[[sqlite3helper instance] closedb];
[service release]; }
oc正規表示式
在電腦科學中,是指乙個用來描述或者匹配一系列符合某個句法規則的字串的單個字串。在很多文字編輯器或其他工具裡,正規表示式通常被用來檢索和 或替換那些符合某個模式的文字內容。許多程式語言都支援利用正規表示式進行字串操作。正規表示式用於字串處理 表單驗證等場合,實用高效。現將一些常用的表示式收集於此,以備...
OC 正規表示式
常用的第三方正則庫 這裡面涉及到的正規表示式語法 d 匹配任何乙個數字,即 0 9 d 表示1個以上的數字 d 強行加上小括號,分組,相當把這個值緩衝起來,在 裡用 mystring substringwithrange match rangeatindex 1 可以提取出來回合數 表示小句點 s ...
OC正規表示式的使用
oc中一般正規表示式的使用方法為2步 1.建立乙個正規表示式物件 2.利用正規表示式來測試對應的字串 例如nsstring checkstring a34sd231 1.建立正規表示式,0 9 表示 0 到 9 的字元的集合 nsstring pattern 0 9 將正規表示式設定為oc規則 ns...