php數據採集常見技術要領:
1、熟練正則表達式提取數據技術:提取內容關鍵步驟
2、熟練字元編碼轉換分析技術:兼容性管理以及數據有效性控制
3、熟練數據出庫入庫整理技術:對已採集內容的存儲管理,包括資料庫以及文件和進度
4、發掘數據以及網站爬行技術:分析網站結構,簡化爬行手法,提高效率
5、反反採集處理技術:對於存在反採集的目標對象而設計的反反採集技術
6、多伺服器並發採集管理技術:提高效率的工作方法
7、數據整理分析技術:查漏驗證數據正確性有效性
8、自我身份保護技術:自身信息的保護
B. php怎樣web伺服器端的數據採集方法
class caiji{
private $reg;//正則
private $url;//數據源
private $dataArr;//返回結果數組
public function __construct($reg,$url){
$this->reg=$reg;
$this->url=$url;
$this->caijStar();
}
private function caijStar(){//採集方法
$conn=file_get_contents("{$this->url}");
$reg="{$this->reg}";
preg_match_all($reg,$conn,$this->dataArr);
}
public function getArr(){//數據獲取方法
return $this->dataArr;
}
}
C. 用PHP進行數據採集
$strPreg = "|<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>|U";
搞定了才發現你都沒懸賞分。。。
D. php採集數據怎麼做啊
用fopen/file/file_get_contents/curl之類的函數將遠程頁面獲得內容, 採用正則或過濾之類的獲得自己所需要的東西, 最好寫入相應的資料庫保存起來。
E. PHP採集網頁部分數據的問題
這個網址的空格轉換一下:
http://sale.gb168.cn/Saleagent/Customer/Shopping/StandardDetails.aspx?StandNo=GB/T%2020819.1-2007
F. php網頁採集(採集js延遲載入的數據)
可以用狐火看下網路請求,模擬相應網路請求,取數據。
G. php使用3種方法實現數據採集 什麼叫採集
下面的php代碼可以將HTML表格的每行每列轉為數組,採集表格數據
<?php function get_td_array($table) { $table = preg_replace("'<table[^>]*?>'si","",$table); $table = preg_replace("'<tr[^>]*?>'si","",$table); $table = preg_replace("'<td[^>]*?>'si","",$table); $table = str_replace("</tr>","{tr}",$table); $table = str_replace("</td>","{td}",$table); //去掉 HTML 標記 $table = preg_replace("'<[/!]*?[^<>]*?>'si","",$table); //去掉空白字元 $table = preg_replace("'([rn])[s]+'","",$table); $table = str_replace(" ","",$table); $table = str_replace(" ","",$table); $table = explode('{tr}', $table); array_pop($table); foreach ($table as $key=>$tr) { $td = explode('{td}', $tr); array_pop($td); $td_array[] = $td; } return $td_array; } ?>
H. 目前php這塊數據採集的開發思路有哪些
我寫過一個:但不是怎麼好使:大概的思路:1.指定網站的路徑URL,2.確定當前URL頁面的指定區域(我的是class="xxx"),將該區域的所有的內容拿過來,進行正則或是其他方式匹配。將匹配的結果過濾後,保存到資料庫。
當然,同求更好的 方式。
I. php採集大數據的方案
1、建議你讀寫數據和下載圖片分開,各用不同的進程完成。
比如說,取數據用get-data.php,下載圖片用get-image.php。
2、多進程的話,php可以簡單的用pcntl_fork()。這樣可以並發多個子進程。
但是我不建議你用fork,我建議你安裝一個gearman worker。這樣你要並發幾個,就啟幾個worker,寫代碼簡單,根本不用在代碼里考慮thread啊,process等等。
3、綜上,解決方案這樣:
(1)安裝gearman worker。
(2)寫一個get-data.php,在crontab里設置它每5分鍾執行一次,只負責讀數據,然後把讀回來的數據一條一條的扔到 gearman worker的隊列里;
然後再寫一個處理數據的腳本作為worker,例如叫process-data.php,這個腳本常駐內存。它作為worker從geraman 隊列里讀出一條一條的數據,然後跟你的資料庫老數據比較,進行你的業務邏輯。如果你要10個並發,那就啟動10個process-data.php好了。處理完後,如果圖片地址有變動需要下載圖片,就把圖片地址扔到 gearman worker的另一個隊列里。
(3)再寫一個download-data.php,作為下載圖片的worker,同樣,你啟動10個20個並發隨便你。這個進程也常駐內存運行,從gearman worker的圖片數據隊列里取數據出來,下載圖片
4、常駐進程的話,就是在代碼里寫個while(true)死循環,讓它一直運行好了。如果怕內存泄露啥的,你可以每循環10萬次退出一下。然後在crontab里設置,每分鍾檢查一下進程有沒有啟動,比如說這樣啟動3個process-data worker進程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php >> /dev/null 2>&1'
不知道你明白了沒有