打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PHP抓取网页内容的代码
PHP抓取网页内容的方法主要有:
1.file_get_contents
PHP代码
$url = http://www.xxx.com/;
$contents = file_get_contents($url);
echo $contents;
?>
2.curl
PHP代码
$url = “http://www.xxx.com/”;
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//在需要用户检测的网页里需要增加下面两行
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
//curl_setopt($ch, CURLOPT_USERPWD, US_NAME.”:”.US_PWD);
$contents = curl_exec($ch);
curl_close($ch);
echo $contents;
?>
3.fopen->fread->fclose
PHP代码
$handle = fopen (”http://www.xxx.com/”, “rb”);
$contents = “”;
do {
$data = fread($handle, 8192);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);
fclose ($handle);
echo $contents;
?>
4.fsockopen
if(function_exists('fsockopen'))
{
$urlinfo = parse_url($url);
$host = $urlinfo['host'];
$str = explode($host, $url);
$uri = $str[1];
unset($urlinfo, $str);
$content = '';
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if(!$fp)
{
$content = 'Can Not Open Socket...';
}
else
{
$out = "GET $uri HTTP/1.1rn";
$out.= "Host: $host rn";
$out.= "Accept: */*rn";
$out.= "User-Agent: $_SERVER[HTTP_USER_AGENT]rn";
$out.= "Connection: Closernrn";
fputs($fp, $out);
while (!feof($fp))
{
$content .= fgets($fp, 4069);
}
fclose($fp);
}
}
Ps1.使用file_get_contents和fopen必须空间开启allow_url_fopen。方法:编辑php.ini,设置allow_url_fopen = On,allow_url_fopen关闭时fopen和file_get_contents都不能打开远程文件。
Ps2.使用curl必须空间开启curl。方法:WIN下修改php.ini,将extension=php_curl.dll前面的分号去掉,而且需要拷贝ssleay32.dll和libeay32.dll到C:\WINDOWS\system32下;Linux下要安装curl扩展。
建议打开URL时使用file_get_contents()方法,可优化打开速度.
如果在无代理等情况下直接抓取网页,建议使用curl方法,否则可能会遭服务器拒绝
注意:如果抓取的网页为乱码,则要考虑查下服务器的输出方式了,因为很多大型网站为了加快浏览,采用了压缩输出,header中有Content-Encoding: gzip。这时候如果直接,处理抓取内容,则为乱码。使用必须先解压内容。判断是否被压缩的方式是输出头信息:
方法1:
$html = file_get_contents($url);
print_r($http_response_header);
方法2:
$fp = fopen($url, 'r');
print_r(stream_get_meta_data($fp));
fclose($fp);
解压方式也有两种:
1.使用gzuncompress函数,不过这个我没有调试成功。
2.使用如下代码:
$zd = gzopen($filename, "r");
$contents = gzread($zd, filesize ($filename));
gzclose($zd);
file_put_contents($filename,$contents);
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
php获取远程文件内容与大小的函数代码
PHP读取网页文件内容的实现代码(fopen,curl等)
php错误提示failed to open stream: HTTP request failed!的完美解决方法
php执行https接口get的方式
PHP curl
php 自动提交表单
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服