(一)采集原理分析
資料采集是指擷取指定網站的内容,之後将其存入資料庫中,采集步驟如下:
第1步:擷取指定網址的資料
http://www.qidian.com?id=1&articleid=6
擷取資料可以使用如下函數:
(1)file_get_content()函數
(2)fopen()函數、fread()函數
(3)curl()函數
(4)snoopy類
第2步:提取所需内容,使用preg_match_all()函數擷取比對的資料
使用正規表達式擷取需要采集的特定内容。
第3步:分類存儲至資料庫表中(入庫)
第4步:從資料庫中讀取資料
第5步:展示讀取出的資料
(二)正規表達式
使用正規表達式可以比對、檢索字元串。
r e g = ’ / … . reg=’/^…. reg=’/…./’;
KaTeX parse error: Expected 'EOF', got '#' at position 6: reg=’#̲^….#’;
1.量詞
- 比對任何至少包含一個前導字元串
- 比對任何包含零個或多個前導字元串
- 比對任何包含零個或一個前導字元串
- 比對任意字元串
- {x} 比對任何包含x 個的前導字元串 /y{3}/ yyy
- {x,y} 比對任何包含x 到y 個前導字元串 /y{2,5}/
- {x,} 比對任何包含至少x 個前導字元串 /y{2,}/
- $ 比對字元串的行尾 /abc[0-9]$/
- ^ 比對字元串的行首
- | 比對字元串的左邊或者右邊(或)
-
()包圍一個字元分組或定義個反引用,可以使用$1,$2 提取 ([0-9]{3}-[0-9]{8})+
*可以比對任意字元串(因為.比對任意字元,*表示任意個)
2.元字元
- [a-z] 比對任何包含小寫字母a-z 的字元串
- [c-g] 比對c,d,e,f,g [3-7]
- [A-Z] 比對任何包含大寫字母A-Z 的字元串
- [0-9] 比對任何包含數字0-9 的字元串
- [bek] 比對任何包含小寫字母b、e、k的字元串,隻要字元串中含有b、e、k中的任意一個就算比對到 goo[bek]d
- [^bek] 隻要有不含b、e、k的字元都能比對
- [a-zA-Z0-9_] 比對任何包含a-zA-Z0-9 和下劃線的字元串
- \w 比對任何包含a-zA-Z0-9 和下劃線的字元串(同上)
- \W 比對任何沒有下劃線和字母數字的字元串,和\w相反
- \d 比對任何數字字元,和[0-9]相同
- \D 比對任何非數字字元,和[^0-9]相同
- \s 比對任何空白字元
- \S 比對任何非空白字元
- \b 比對是否到達了單詞邊界 /abc\b/ helloabcgood
- \B 比對是否沒有達到單詞邊界
-
\ 比對正則中的特殊字元
3.修飾符
文法:修飾符放在“/”的後面 /\w/i
- i 完成不區分大小寫的搜尋
- m 在比對首内容或者尾内容時候采用多行識别比對
- x 忽略正則中的空白
- A 強制從頭開始比對
-
U 禁止貪婪比對隻跟蹤到最近的一個比對符并結束 /xo*/U xoooobc
4.正則相關函數
- preg_match(’/正規表達式/’ , 要處理的字元串);
- 比對到一次就終止繼續比對,傳回1;
- 如果沒有比對到,就一直向後找,直到字元串的末尾,如果仍然沒找到,傳回0。
比對郵箱
- preg_match_all(’/正規表達式/’,字元串,$arr)
- preg_match_all()搜尋字元串所有比對的結果,将所有比對到的字元串放到$arr數組中。
- preg_replace(’/正規表達式/’, ‘字元串’, $str);
- 将$str中比對正則規則的内容用指定字元串替換。
(三)采集入庫
采集網頁中清單的标題和連結,擷取後存入資料庫。
(四)Snoopy
(五)snoopy類實作資料采集
output()函數的功能是格式化輸出數組資料
fetch()方法
Fetchtext()、fetchlinks()、fetchform()方法
(六)Snoopy實作表單送出和模拟登陸
(七)Snoopy實作圖檔下載下傳
(八)cURL
1.Client URL庫
2.開啟curl擴充
3.使用cURL完成請求的四步
第1步:初始化資源 $ch = curl_init();
第2步: 設定相關的參數 curl_setopt()
第3步: 發送請求 curl_exec($ch)
第4部:關閉資源 curl_close($ch);
4.封裝cURL函數
封裝POST請求
封裝GET請求
POST請求與GET請求相結合
5.使用cURL函數送出請求
希望在這裡可以給大家提供一些幫助