十年网站开发经验+多家企业客户+靠谱的建站团队
量身定制+运营维护+专业推广+无忧售后,网站问题一站解决
你是想抓别人网页上ajax动态载入的数据吧?1、要找到它的ajax载入的URL地址2、利用PHP的file_get_contents($url)函数读取那个url地址。3、对抓取到的内容进行分析或正则过滤。
可以用以下4个方法来抓取网站的数据:
1.用file_get_contents以get方式获取内容:
$url='';
$html=file_get_contents($url);
echo$html;
2.用fopen打开url,以get方式获取内容
$fp=fopen($url,'r');
stream_get_meta_data($fp);
$result='';
while(!feof($fp))
{
$result.=fgets($fp,1024);
}
echo"urlbody:$result";
fclose($fp);
3.用file_get_contents函数,以post方式获取url
$data=array(
'foo'='bar',
'baz'='boom',
'site'='',
'name'='nowamagic');
$options=array(
'method'='POST',
'header'='Content-type:application/x-www-form-urlencoded',
'content'=$data
)
);
$url="";
$context=stream_context_create($options);
$result=file_get_contents($url,false,$context);
echo$result;
4、使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展
$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下获取网页内容的几种方法:
用file_get_contents,以get方式获取内容。
用fopen打开url,以get方式获取内容。
使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展。
用file_get_contents函数,以post方式获取url。
用fopen打开url,以post方式获取内容。
用fsockopen函数打开url,获取完整的数据,包括header和body。
使用PHP的cURL库可以简单和有效地去抓网页你只需要运行一个脚本然后分析一下你所抓取的网页然后就可以以程序的方式得到你想要的数据了无论是你想从从一个链接上取部分数据或是取一个XML文件并把其导入数据库那怕就是简单的获取网页内容cURL是一个功能强大的PHP库本文主要讲述如果使用这个PHP库
启用cURL设置
首先我们得先要确定我们的PHP是否开启了这个库你可以通过使用php_info()函数来得到这一信息
﹤phpphpinfo();﹥
如果你可以在网页上看到下面的输出那么表示cURL库已被开启
如果你看到的话那么你需要设置你的PHP并开启这个库如果你是在Windows平台下那么非常简单你需要改一改你的phpini文件的设置找到php_curldll并取消前面的分号注释就行了如下所示
//取消下在的注释extension=php_curldll
如果你是在Linux下面那么你需要重新编译你的PHP了编辑时你需要打开编译参数——在configure命令上加上–withcurl参数
一个小示例
如果一切就绪下面是一个小例程
﹤php//初始化一个cURL对象$curl=curl_init();
//设置你需要抓取的URLcurl_setopt($curlCURLOPT_URL//cocre);
//设置headercurl_setopt($curlCURLOPT_HEADER);
//设置cURL参数要求结果保存到字符串中还是输出到屏幕上curl_setopt($curlCURLOPT_RETURNTRANSFER);
//运行cURL请求网页$data=curl_exec($curl);
//关闭URL请求curl_close($curl);
//显示获得的数据var_dump($data);
如何POST数据
﹤php$phoneNumber=;$message=Thismessagewasgeneratedbycurlandphp;$curlPost=pNUMBER=urlencode($phoneNumber)MESSAGE=urlencode($message)SUBMIT=Send;$ch=curl_init();curl_setopt($chCURLOPT_URL//example/sendSMSphp);curl_setopt($chCURLOPT_HEADER);curl_setopt($chCURLOPT_RETURNTRANSFER);curl_setopt($chCURLOPT_POST);curl_setopt($chCURLOPT_POSTFIELDS$curlPost);$data=curl_exec();curl_close($ch);﹥
从上面的程序我们可以看到使用CURLOPT_POST设置HTTP协议的POST方法而不是GET方法然后以CURLOPT_POSTFIELDS设置POST的数据
关于代理服务器
下面是一个如何使用代理服务器的示例请注意其中高亮的代码代码很简单我就不用多说了
﹤php$ch=curl_init();curl_setopt($chCURLOPT_URL//example);curl_setopt($chCURLOPT_HEADER);curl_setopt($chCURLOPT_RETURNTRANSFER);curl_setopt($chCURLOPT_HTTPPROXYTUNNEL);curl_setopt($chCURLOPT_PROXYfakeproxy:);curl_setopt($chCURLOPT_PROXYUSERPWDuser:password);$data=curl_exec();curl_close($ch);﹥关于SSL和Cookie
关于SSL也就是HTTPS协议你只需要把CURLOPT_URL连接中的//变成//就可以了当然还有一个参数叫CURLOPT_SSL_VERIFYHOST可以设置为验证站点
关于Cookie你需要了解下面三个参数
CURLOPT_COOKIE在当面的会话中设置一个cookie
CURLOPT_COOKIEJAR当会话结束的时候保存一个Cookie
CURLOPT_COOKIEFILECookie的文件
HTTP服务器认证
最后我们来看一看HTTP服务器认证的情况
﹤php$ch=curl_init();curl_setopt($chCURLOPT_URL//example);curl_setopt($chCURLOPT_RETURNTRANSFER);curl_setopt($chCURLOPT_HTTPAUTHCURLAUTH_BASIC);curl_setopt(CURLOPT_USERPWD[username]:[password])