重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
访问需要采集的页面,如果数据是用js输出的html,那么必定有接口或者本身页面中给js提供了数据,来遍历输出html。
在徐闻等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站设计 网站设计制作按需设计,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销,外贸营销网站建设,徐闻网站建设费用合理。
用chrome的审查元素中的network,可以单独看xhr,看看是否是ajax请求的接口,如果数据是从接口来的,直接用PHP去获取那个接口的数据就可以了。
如果没有ajax请求,查看html源代码,在里面找数据。
一般使用php发送请求,获取返回的数据,进行解析;
?php
$url="接口地址";
//发送请求获取返回值,file_get_contents只支持get请求,post使用curl
$json = file_get_contents($url);
//把json数据转化成数组
$data = json_decode($json,true);
//打印看看
print_r($data);
?
php获取接口资源的IP地址:
?php
function getIPLoc_sina($queryIP){
$url = ';ip='.$queryIP;
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_ENCODING ,'utf8');
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
$location = curl_exec($ch);
$location = json_decode($location);
curl_close($ch);
$loc = "";
if($location===FALSE) return "";
if (empty($location-desc)) {
$loc = $location-province.$location-city.$location-district.$location-isp;
}else{ $loc = $location-desc;
}
return $loc;
}
echo getIPLoc_sina("183.37.209.57");
?
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'
不知道你明白了没有
一种传值方式是:wc.php?a=32;另一个页面用$_POST[$a]接受即可。另一个传值方式是:$a=32; 另一个页面用$_POST[$a]接受即可。请问:1。二者有什么不同?2。二者的使用范围有何不一样?即何时用方法一方便,何时用方法二较好。并说明原因。3。二者的优点与不足点。
建议你去后盾人那找找答案,最近他们在搞什么实训班培训的活动