天天看點

資料的采集

(一)采集原理分析

資料采集是指擷取指定網站的内容,之後将其存入資料庫中,采集步驟如下:

第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函數送出請求

資料的采集

希望在這裡可以給大家提供一些幫助

繼續閱讀