當前位置:首頁 » 編程語言 » php採集類

php採集類

發布時間: 2022-04-19 21:13:50

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'

不知道你明白了沒有

⑵ 如何用php採集新浪財經

給您提供一下思想,希望能夠幫您解決。fopen("tmp.htm","r"); //只讀打開
$str=str_replace("{title}",$title,$str);
$str=str_replace("{content}",$content,$str);//替換內容
fclose($fp);簡單的採集常用函數。,您也可以用強大的snoopy採集類。彩集新浪財經,需要查看/分析源代碼,然後用正則表達式,匹配要採集的代碼然後重新組織數據結構。

⑶ php採集代碼是什麼

採集就是把目標網站的內容通過php代碼存儲到自己的網站資料庫中,從而把別人的變成自己的。

這樣就可以省去很多自己發布信息的時間,非常快速。

但是只建議在網站建立之初進行採集,因為如果採集過多會被搜索引擎屏蔽

⑷ PHP中怎樣實現文章採集

只舉例說明,生產環境你自己根據情景去搞
$url = 'www.domain.com';

$content = file_get_content($url);//抓取網頁全部內容
preg_match( string pattern, string subject [, array matches ] );//正則獲取自己需要的內容
入庫~
完事了。。。
當然,情形復雜,例如需要登錄,採集目標限制等問題,這再說...
實際使用的時候,可以直接使用Snoopy類,提供好多方法供使用,比自己去造輪子要安全,當然,你可以在她的基礎上再去造輪子~~~

⑸ 用PHP進行數據採集

$strPreg = "|<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>\s*<td[^>]+>([^<]+)<\/td>|U";

搞定了才發現你都沒懸賞分。。。

⑹ 目前php這塊數據採集的開發思路有哪些

指定網站的路徑URL,2.確定當前URL頁面的指定區域(我的是class="xxx"),將該區域的所有的內容拿過來,進行正則或是其他方式匹配。將匹配的結果過濾後,保存到資料庫。
你可以去後盾人平台看一下,裡面的東西不錯

⑺ 怎樣用php 採集百度地圖的數據

一般來說,PHP採集數據最簡單的辦法是使用file_get_content函數,功能更強大的推薦使用cURL函數庫。

⑻ PHP 採集程序中常用的函數

復制代碼
代碼如下:
//獲得當前的腳本網址
function
get_php_url()
{
if(!empty($_SERVER[」REQUEST_URI」]))
{
$scriptName
=
$_SERVER[」REQUEST_URI」];
$nowurl
=
$scriptName;
}
else
{
$scriptName
=
$_SERVER[」PHP_SELF」];
if(empty($_SERVER[」QUERY_STRING」]))
$nowurl
=
$scriptName;
else
$nowurl
=
$scriptName.」?」.$_SERVER[」QUERY_STRING」];
}
return
$nowurl;
}
//把全形數字轉為半形數字
function
GetAlabNum($fnum)
{
$nums
=
array(」0」,」1」,」2」,」3」,」4」,」5」,」6」,」7」,」8」,」9」);
$fnums
=
「0123456789″;
for($i=0;$i<=9;$i++)
$fnum
=
str_replace($nums[$i],$fnums[$i],$fnum);
$fnum
=
ereg_replace(」[^0-9\.]|^0{1,}」,」」,$fnum);
if($fnum==」」)
$fnum=0;
return
$fnum;
}
//去除HTML標記
function
Text2Html($txt)
{
$txt
=
str_replace(」
「,」」,$txt);
$txt
=
str_replace(」<」,」<」,$txt);
$txt
=
str_replace(」>」,」>」,$txt);
$txt
=
preg_replace(」/[\r\n]{1,}/isU」,」<br/>\r\n」,$txt);
return
$txt;
}
//清除HTML標記
function
ClearHtml($str)
{
$str
=
str_replace('<','<',$str);
$str
=
str_replace('>','>',$str);
return
$str;
}
//相對路徑轉化成絕對路徑
function
relative_to_absolute($content,
$feed_url)
{
preg_match('/(http|https|ftp):\/\//',
$feed_url,
$protocol);
$server_url
=
preg_replace(」/(http|https|ftp|news):\/\//」,
「」,
$feed_url);
$server_url
=
preg_replace(」/\/.*/」,
「」,
$server_url);
if
($server_url
==
」)
{
return
$content;
}
if
(isset($protocol[0]))
{
$new_content
=
preg_replace('/href=」\//',
『href=」『.$protocol[0].$server_url.'/',
$content);
$new_content
=
preg_replace('/src=」\//',
'src=」『.$protocol[0].$server_url.'/',
$new_content);
}
else
{
$new_content
=
$content;
}
return
$new_content;
}
//取得所有鏈接
function
get_all_url($code){
preg_match_all('/<a\s+href=[」|\']?([^>」\'
]+)[」|\']?\s*[^>]*>([^>]+)<\/a>/i',$code,$arr);
return
array('name'=>$arr[2],'url'=>$arr[1]);
}
//獲取指定標記中的內容
function
get_tag_data($str,
$start,
$end)
{
if
(
$start
==

||
$end
==

)
{
return;
}
$str
=
explode($start,
$str);
$str
=
explode($end,
$str[1]);
return
$str[0];
}
//HTML表格的每行轉為CSV格式數組
function
get_tr_array($table)
{
$table
=
preg_replace(」『<td[^>]*?>'si」,'」『,$table);
$table
=
str_replace(」</td>」,'」,',$table);
$table
=
str_replace(」</tr>」,」{tr}」,$table);
//去掉
HTML
標記
$table
=
preg_replace(」『<[\/\!]*?[^<>]*?>'si」,」」,$table);
//去掉空白字元
$table
=
preg_replace(」『([\r\n])[\s]+'」,」」,$table);
$table
=
str_replace(」
「,」」,$table);
$table
=
str_replace(」
「,」」,$table);
$table
=
explode(」,{tr}」,$table);
array_pop($table);
return
$table;
}
//將HTML表格的每行每列轉為數組,採集表格數據
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(」『([\r\n])[\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;
}
//返回字元串中的所有單詞
$distinct=true
去除重復
function
split_en_str($str,$distinct=true)
{
preg_match_all('/([a-zA-Z]+)/',$str,$match);
if
($distinct
==
true)
{
$match[1]
=
array_unique($match[1]);
}
sort($match[1]);
return
$match[1];
}

⑼ 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; } ?>

⑽ php自動採集如何實現

PHP自動採集能一定程度的實現,部分網站的頁面結構存在一定的共通點,比如文章內容頁的標題,不少網站是標記在<h1>里的,實在不行,就採集<title>,絕對能採到,然後、過濾掉title裡面的網站名稱。
採集文章內容就相對麻煩,但是通過層層分析,層層剝離,一定要進行大量的網站分析,寫出多套通用性比較強的採集規則,程序在採集的時候也要進行大量分析。
有幾點是可以肯定的,那就是絕對不能要求採集效果達到為某個網站單獨寫採集規則來的效果好,也絕對不是能匹配任意網站,頂多能匹配部分網站。

熱點內容
solidworkspcb伺服器地址 發布:2025-07-18 22:50:35 瀏覽:815
怎麼在堆疊交換機里配置vlan 發布:2025-07-18 22:42:35 瀏覽:623
java調用別人的介面 發布:2025-07-18 22:37:35 瀏覽:433
伺服器四個節點如何聯網 發布:2025-07-18 22:36:02 瀏覽:271
華強北什麼地方休安卓手機 發布:2025-07-18 22:24:56 瀏覽:735
資料庫的根本目標 發布:2025-07-18 21:37:50 瀏覽:938
壓縮機的流速 發布:2025-07-18 21:37:40 瀏覽:407
三星怎麼取消手機密碼 發布:2025-07-18 21:33:50 瀏覽:630
安卓手機耳機如何彈窗顯示電量 發布:2025-07-18 21:20:53 瀏覽:60
雲伺服器搭建需要什麼工具 發布:2025-07-18 20:51:08 瀏覽:322