重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
?php????
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了儀隴免費建站歡迎大家使用!
$URLStyle?=?"";????
$chinaURL?=?sprintf($URLStyle,?"china");????
$chinaStr?=?file_get_contents($chinaURL);????
$chinaObj?=?simplexml_load_string($chinaStr);????
$chinaObjLen?=?count($chinaObj-city);????
echo?"chinaObjLen?=?".$chinaObjLen."\n";????
for?($i=0;$i$chinaObjLen;$i++){????
//遍歷省一級節(jié)點,共37個????
$level1?=?$chinaObj-city[$i]["pyName"];????
$shengjiURL?=?sprintf($URLStyle,?$level1);????
$shengjiStr?=?file_get_contents($shengjiURL);????
//echo?$shengjiStr;????
$shengjiObj?=?simplexml_load_string($shengjiStr);?????
$shengjiObjLen?=?count($shengjiObj-city);????
//??????echo?$chinaObj-city[$i]["quName"];????
//??????echo?"?".$shengjiObjLen."\n";????
for?($j=0;$j$shengjiObjLen;$j++){????
//遍歷市一級節(jié)點????
$level2?=?$shengjiObj-city[$j]["pyName"];????
$shijiURL?=?sprintf($URLStyle,?$level2);????
$shijiStr?=?file_get_contents($shijiURL);????
//echo?$shijiStr;????
$shijiObj?=?simplexml_load_string($shijiStr);?????
//直轄市和海南、臺灣、釣魚島等沒有縣級節(jié)點????
if(!$shijiObj){????
echo?"WARNNING:?not?exsit?next?level?node.?-?".$level1."-".$shijiURL."\n";????
echo?'??"'.$shengjiObj-city[$j]["cityname"].'"?=?';????
echo?$shengjiObj-city[$j]["url"].",\n";????
continue;????
}????
$shijiObjLen?=?count($shijiObj-city);????
//echo?$shengjiObj-city[$j]["cityname"]."??";????
//echo?$shijiObjLen."\n";????
for?($k=0;$k$shijiObjLen;$k++){????
//遍歷縣一級節(jié)點????
$xianji_code?=?$shijiObj-city[$k]["url"];????
echo?'??"'.$shijiObj-city[$k]["cityname"].'"?=?';????
echo?$shijiObj-city[$k]["url"].",\n";????
//echo?$xianji_code."\n";?????
}????
}????
}???????????
//print_r($chinaObj);????
?
通過XML接口根節(jié)點遞歸獲得全國幾千個縣以上城市cide code的代碼
1、建議你讀寫數(shù)據(jù)和下載圖片分開,各用不同的進程完成。
比如說,取數(shù)據(jù)用get-data.php,下載圖片用get-image.php。
2、多進程的話,php可以簡單的用pcntl_fork()。這樣可以并發(fā)多個子進程。
但是我不建議你用fork,我建議你安裝一個gearman worker。這樣你要并發(fā)幾個,就啟幾個worker,寫代碼簡單,根本不用在代碼里考慮thread啊,process等等。
3、綜上,解決方案這樣:
(1)安裝gearman worker。
(2)寫一個get-data.php,在crontab里設(shè)置它每5分鐘執(zhí)行一次,只負責(zé)讀數(shù)據(jù),然后把讀回來的數(shù)據(jù)一條一條的扔到 gearman worker的隊列里;
然后再寫一個處理數(shù)據(jù)的腳本作為worker,例如叫process-data.php,這個腳本常駐內(nèi)存。它作為worker從geraman 隊列里讀出一條一條的數(shù)據(jù),然后跟你的數(shù)據(jù)庫老數(shù)據(jù)比較,進行你的業(yè)務(wù)邏輯。如果你要10個并發(fā),那就啟動10個process-data.php好了。處理完后,如果圖片地址有變動需要下載圖片,就把圖片地址扔到 gearman worker的另一個隊列里。
(3)再寫一個download-data.php,作為下載圖片的worker,同樣,你啟動10個20個并發(fā)隨便你。這個進程也常駐內(nèi)存運行,從gearman worker的圖片數(shù)據(jù)隊列里取數(shù)據(jù)出來,下載圖片
4、常駐進程的話,就是在代碼里寫個while(true)死循環(huán),讓它一直運行好了。如果怕內(nèi)存泄露啥的,你可以每循環(huán)10萬次退出一下。然后在crontab里設(shè)置,每分鐘檢查一下進程有沒有啟動,比如說這樣啟動3個process-data worker進程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php /dev/null 21'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php /dev/null 21'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php /dev/null 21'
不知道你明白了沒有
你是想抓別人網(wǎng)頁上ajax動態(tài)載入的數(shù)據(jù)吧?
1、要找到它的ajax載入的URL地址
2、利用PHP的file_get_contents($url)函數(shù)讀取那個url地址。
3、對抓取到的內(nèi)容進行分析或正則過濾。
PHP連接數(shù)據(jù)庫之PHP連接MYSQL數(shù)據(jù)庫代碼
?php???
$mysql_server_name='localhost';?
//改成自己的mysql數(shù)據(jù)庫服務(wù)器??
$mysql_username='root';?
//改成自己的mysql數(shù)據(jù)庫用戶名??
$mysql_password='12345678';?
//改成自己的mysql數(shù)據(jù)庫密碼??
$mysql_database='mycounter';
//改成自己的mysql數(shù)據(jù)庫名??
$conn=mysql_connect($mysql_server_name,
$mysql_username,$mysql_password,
$mysql_database);???
$sql='CREATE?DATABASE?mycounter?
DEFAULT?CHARACTER?SET?gbk?COLLATE?gbk_chinese_ci;???
';???
mysql_query($sql);???
$sql='CREATE?TABLE?`counter`?
(`id`?INT(255)?UNSIGNED?NOT?NULL?
AUTO_INCREMENT?,`count`?INT(255)?
UNSIGNED?NOT?NULL?DEFAULT?0,PRIMARY?KEY?
(?`id`?)?)?TYPE?=?innodb;';???
mysql_select_db($mysql_database,$conn);???
$result=mysql_query($sql);???
//echo?$sql;???
mysql_close($conn);???
echo?"Hello!數(shù)據(jù)庫mycounter已經(jīng)成功建立!";???
??
PHP連接數(shù)據(jù)庫之PHP連接ACCESS數(shù)據(jù)庫代碼方法
???
$conn?=?new?com("ADODB.Connection");???
$connstr?=?"DRIVER={Microsoft
Access?Driver?(*.mdb)};?
DBQ=".?realpath("data/db.mdb");???
$conn-Open($connstr);???
$rs?=?new?com("ADODB.RecordSet");???
$rs-Open("select?*
from?szd_t",$conn,1,1);???
while(!?$rs-eof)?{???
$f?=?$rs-Fields(1);???
echo?$f-value;???
$rs-MoveNext();???
}???
?
沒有必要用PHP,JQ就可以,代碼如下:
script
$(function(){?//在頁面加載完成時
var?a=$('#goods_number').val();//把input的value賦值給變量a
//此時的a的值就是input的值,之后你可以通過ajax方法把值提交給php腳本
})
/script
希望能幫到你:) 若還有問題請詳細說明你的需求。
問題其實不難,自己都能寫。給你幾個思路吧:
1.在百度知道中,輸入linux,然后會出現(xiàn)列表。復(fù)制瀏覽器地址欄內(nèi)容。
然后翻頁,在復(fù)制地址欄內(nèi)容,看看有什么不同,不同之處,就是你要循環(huán)分頁的i值。
當(dāng)然這個是笨方法。
2.使用php的file或者file_get_contents函數(shù),獲取鏈接URL的內(nèi)容。
3.通過php正則表達式,獲取你需要的3個字段內(nèi)容。
4.寫入數(shù)據(jù)庫。
需要注意的是,百度知道有可能做了防抓取的功能,你剛一抓幾個頁面,可能會被禁止。
建議也就抓10頁數(shù)據(jù)。
其實不難,你肯定寫的出來。 還有,網(wǎng)上應(yīng)該有很多抓取工具,你找找看,然后將抓下來的數(shù)據(jù)
在做分析。寫入數(shù)據(jù)庫。