最近有個任務是需要我檢查一些**,如果純手工檢查的話,感覺既費時又無聊。所以我就想用採集。思路其實很簡單,先把**的原始碼採集下來,然後用正規表示式去匹配符合的鏈結,最後把標題和**入庫、分析。因為我使用最多的是php,所以打算用php做網頁採集。
第一步,鏈結資料庫,取出需要檢查的**和正則。
資料庫這裡我用了postgresql,資料庫和表已經按要求建好。因為預設配置的環境是centos系統加nginx、mysql和php,所以首先是配置環境。配置具體不在這裡多說,下次總結。環境配置好後在php中用pg_connect連線資料庫,這裡我連線了兩個不同的資料庫。
$conn_1=pg_connect("host=***.***.***.*** port=5432 dbname=mydb1 user=postgres password=******") ;
$conn_2=pg_connect("host=***.***.***.*** port=5432?dbname=mydb2?user=postgres password=******") ;
第二步,取出網頁原始碼,對原始碼進行初步處理。
不同**編碼格式不一樣,需要先把編碼統一轉換成utf-8,不然之後入庫會出現亂碼。
//獲取網頁原始碼
//$url='' ;
$str = file_get_contents($url);
//使用preg_match和正規表示式取出編碼
$wcharset = preg_match("///編碼轉換
if($wcharset)
這裡我還使用str_ireplace()函式對取到的原始碼做了些字元替換,不然最後用正則匹配**的時候會出現問題。
第三步,匹配處理後的原始碼字串,對匹配的資料入庫。
從資料庫中取出對應的正則,儲存在$preg變數,符合正則的資料已陣列形式儲存在$m。
$pat = "/(.*?)<\/a>/is";
preg_match_all($pat, $str, $m);
$cnt=count($m[2]) ;
for($i=0;$i<$cnt;$i++)
if(strip_tags($m[4][$i]))
else
//編寫**,對title和url進行入庫操作。}}
採集單個網頁這樣基本上就算完成了。總結,這裡其實就用了preg_match(),preg_match_all()和str_ireplace()函式。程式菜鳥,寫的不好請見諒。
PHP例項 CURL實現簡單採集
在php中我們可以通過編寫curl來實現採集的功能,先分析需要採集的資料的 的特點,加入到我們的curl的屬性中來,實現我們定製採集的功能,最終得到我們需要的結果。curl的使用 preg match all array filter explode php中建立curl請求的基本步驟 1 建立乙個...
php獲取網頁內容方法 採集程式
用php採集程式,抓取頁面的內容在實際的開發當中是非常有用的,如作乙個簡單的內容採集器,提取網頁中的部分內容等等 抓取到的內容在通過正規表示式做一下過濾就得到了你想要的內容,幾種常用的用php抓取網頁中的內容的方法。1.file get contents url contents file get ...
使用phpQuery輕鬆採集網頁內容
phpquery是乙個基於php的服務端開源專案,它可以讓php開發人員輕鬆處理dom文件內容,比如獲取某新聞 的頭條資訊。更有意思的是,它採用了jquery的思想,你可以像使用jquery一樣處理頁面內容,獲取你想要的頁面資訊。採集頭條 include phpquery phpquery.php ...