?php
网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了仪陇免费建站欢迎大家使用!
$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++){
//遍历省一级节点,共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++){
//遍历市一级节点
$level2 = $shengjiObj-city[$j]["pyName"];
$shijiURL = sprintf($URLStyle, $level2);
$shijiStr = file_get_contents($shijiURL);
//echo $shijiStr;
$shijiObj = simplexml_load_string($shijiStr);
//直辖市和海南、台湾、钓鱼岛等没有县级节点
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++){
//遍历县一级节点
$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接口根节点递归获得全国几千个县以上城市cide code的代码
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 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'
不知道你明白了没有
你是想抓别人网页上ajax动态载入的数据吧?
1、要找到它的ajax载入的URL地址
2、利用PHP的file_get_contents($url)函数读取那个url地址。
3、对抓取到的内容进行分析或正则过滤。
PHP连接数据库之PHP连接MYSQL数据库代码
?php
$mysql_server_name='localhost';
//改成自己的mysql数据库服务器
$mysql_username='root';
//改成自己的mysql数据库用户名
$mysql_password='12345678';
//改成自己的mysql数据库密码
$mysql_database='mycounter';
//改成自己的mysql数据库名
$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!数据库mycounter已经成功建立!";
?
PHP连接数据库之PHP连接ACCESS数据库代码方法
?
$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,然后会出现列表。复制浏览器地址栏内容。
然后翻页,在复制地址栏内容,看看有什么不同,不同之处,就是你要循环分页的i值。
当然这个是笨方法。
2.使用php的file或者file_get_contents函数,获取链接URL的内容。
3.通过php正则表达式,获取你需要的3个字段内容。
4.写入数据库。
需要注意的是,百度知道有可能做了防抓取的功能,你刚一抓几个页面,可能会被禁止。
建议也就抓10页数据。
其实不难,你肯定写的出来。 还有,网上应该有很多抓取工具,你找找看,然后将抓下来的数据
在做分析。写入数据库。