php采集页面数据 php获取页面内容的方法

怎么用php采集网站数据简单的分了几个步骤:
1、确定采集目标
2、获取目标远程页面内容(curl、file_get_contents)
3、分析页面html源码,正则匹配你需要的内容(preg_match、preg_match_all),这一步最为重要,不同页面正则匹配规则不一样
4、入库
php如何采集js生成的内容访问需要采集的页面,如果数据是用js输出的html,那么必定有接口或者本身页面中给js提供了数据,来遍历输出html 。
用chrome的审查元素中的network,可以单独看xhr , 看看是否是ajax请求的接口,如果数据是从接口来的,直接用PHP去获取那个接口的数据就可以了 。
【php采集页面数据 php获取页面内容的方法】如果没有ajax请求,查看html源代码,在里面找数据 。
php怎么抓取其它网站数据可以用以下4个方法来抓取网站 php采集页面数据的数据:
1. 用 file_get_contents 以 get 方式获取内容:
?
$url = '';
$html = file_get_contents($url);
echo $html;
2. 用fopen打开urlphp采集页面数据,以get方式获取内容
?
$url = '';
$fp = fopen($url, 'r');
stream_get_meta_data($fp);
$result = '';
while(!feof($fp))
{
$result .= fgets($fp, 1024);
}
echo "url body: $result";
fclose($fp);
3. 用file_get_contents函数,以post方式获取url
?
$data = https://www.04ip.com/post/array(
'foo'='bar',
'baz'='boom',
'site'='',
'name'='nowa magic');
$data = https://www.04ip.com/post/http_build_query($data);
//$postdata = https://www.04ip.com/post/http_build_query($data);
$options = array(
'http' = array(
'method' = 'POST',
'header' = 'Content-type:application/x-www-form-urlencoded',
'content' = $data
//'timeout' = 60 * 60 // 超时时间(单位:s)
)
);
$url = "";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
4、使用curl库php采集页面数据,使用curl库之前,可能需要查看一下php.ini是否已经打开php采集页面数据了curl扩展
$url = '';
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
php 如何采集页面的两层链接的数据先采集第一层页面的链接,然后往下层采集内容
至于代码 , 就是获取页面内容加正则收集链接
用PHP获取网页部分数据如果你要

之间的所有源码 , 用 preg_match 就可以,不用preg_match_all,如果你要里面的所有的
标签中的内容,可以用preg_match_all //提取所有代码 $pattern = '/
(. ?)
/is'; preg_match($pattern, $string, $match); //$match[0] 即为

之间的所有源码 echo $match[0]; //然后再提取
之间的内容 $pattern = '/(. ?)li/is'; preg_match_all($pattern, $match[0], $results); $new_arr=array_unique($results[0]); foreach($new_arr as $kkk){ echo $kkk; }
php curl 大量数据采集这个需要配合js,打开一个html页面 , 首先js用ajax请求页面,返回第一个页面信息确定处理完毕(ajax有强制同步功能),ajax再访问第二个页面 。(或者根据服务器状况,你可以同时提交几个URL , 跑几个相同的页面)
参数可以由js产生并传递url,php后台页面根据URL抓页面 。然后ajax通过php,在数据库或者是哪里设一个标量 , 标明检测到哪里 。由于前台的html页面执行多少时候都没问题,这样php的内存限制和执行时间限制就解决了 。
因为不会浪费大量的资源用一个页面来跑一个瞬间500次的for循环了 。(你的500次for循环死了原因可能是获取的数据太多,大过了php限制的内存)
不过印象中curl好像也有强制同步的选项 , 就是等待一个抓取后再执行下一步 。但是这个500次都是用一个页面线程处理,也就是说肯定会远远大于30秒的默认执行时间 。
php采集页面数据的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于php获取页面内容的方法、php采集页面数据的信息别忘了在本站进行查找喔 。

    推荐阅读