对于php使用服务器进行远程抓取百度网页内容感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解php使用服务器进行远程抓取百度网页内容,并且为您提供关于phpcurl抓取网页内容简单示例、ph
对于php使用服务器进行远程抓取百度网页内容感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解php使用服务器进行远程抓取百度网页内容,并且为您提供关于php curl抓取网页内容简单示例、php – 如何在抓取网页时将网页内容转换为一致的字符集?、php 抓取网页内容与图片的方法、php 模拟用户抓取网页内容程序的宝贵知识。
本文目录一览:- php使用服务器进行远程抓取百度网页内容(php使用服务器进行远程抓取百度网页内容)
- php curl抓取网页内容简单示例
- php – 如何在抓取网页时将网页内容转换为一致的字符集?
- php 抓取网页内容与图片的方法
- php 模拟用户抓取网页内容程序
php使用服务器进行远程抓取百度网页内容(php使用服务器进行远程抓取百度网页内容)
PHP使用服务器进行远程抓取百度网页内容
<?PHP error_reporting(E_ALL^E_NOTICE^E_WARNING); $useragent= $_SERVER['HTTP_USER_AGENT']; //获取客户端ip function getip() { $unkNown = 'unkNown'; if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unkNown)) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], $unkNown)) { $ip = $_SERVER['REMOTE_ADDR']; } if (false !== strpos($ip, ',')) $ip = reset(explode(',', $ip)); return $ip; } function get_client_ip(){ $cip = "unkNown"; if($_SERVER['REMOTE_ADDR']){ $cip = $_SERVER['REMOTE_ADDR']; }else if(getenv("REMOTE_ADDR")){ $cip = getenv("REMOTE_ADDR"); } return $cip; } //添加关键词 $word=[ '医院', ]; $arrword=$word[mt_rand(0,count($word)-1)]; $keyword= urlencode($arrword); $url = "http://m.baidu.com/s?word=".$keyword; //$url = "http://www.sdfymj.com/ua.PHP"; // 构造包头,模拟浏览器请求 $header = array ( "Host:www.baidu.com", "Content-Type:application/x-www-form-urlencoded",//post请求 "Connection: keep-alive", 'Referer:http://m.baidu.com/' ); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $url ); curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header ); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.getip(), 'CLIENT-IP:'.get_client_ip())); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // 执行 $content = curl_exec ( $ch ); if ($content == FALSE) { echo "error:" . curl_error ( $ch ); } // 关闭 curl_close ( $ch ); //输出结果 echo $content; ?>
php curl抓取网页内容简单示例
<?php
function get_file($url){
// 初始化
$ch = curl_init();
// 设置要获取内容的url
curl_setopt($ch, CURLOPT_URL, $url);
// 设置内容不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 抓取内容
$res = curl_exec($ch);
// 关闭资源
curl_close($ch);
return $res;
}
echo get_file(''www.baidu.com'');
php – 如何在抓取网页时将网页内容转换为一致的字符集?
>如果失败,我使用元编码(http-equiv =“Content-Type”…).
>如果没有元内容类型,我使用HTTP标头(content_type).
>如果没有http内容类型,我假设为UTF-8.
>最后,我使用mb_convert_encoding()转换文档.然后我抓了它的内容. (我故意省略了要转换的编码,以避免在此讨论.) @H_301_5@我试图获得尽可能多的准确内容,而不仅仅是忽略网页,因为开发人员没有正确设置标题. @H_301_5@你用这种方法看到了什么问题? @H_301_5@我是否会使用mb_detect_encoding()和mb_convert_encoding()方法遇到问题?
解决方法
var_dump(mb_detect_encoding(file_get_contents('http://www.pazaruvaj.com/')));@H_301_5@另一个输出字符串(5)“UTF-8”,这显然是不正确的结果. HTTP标头和http-equiv在本网站上正确设置,并且它无效UTF-8: @H_301_5@
var_dump(mb_detect_encoding(file_get_contents('http://www.arukereso.hu/')));@H_301_5@我建议你应用所有可用的方法,并使用外部库(如下一个:http://mikolajj.republika.pl/)并使用最可能的编码. @H_301_5@另一种使其更精确的方法是建立一个特定国家/地区的可能字符集列表,并仅使用mb_convert_encoding.与匈牙利一样,ISO-8859-2或UTF-8最有可能,其他人则不值得考虑.可以通过TLD,Content-Language HTTP标头和IP地址位置的组合来猜测国家/地区.虽然这需要一些研究工作和额外的开发,但值得努力. @H_301_5@mb_convert_encoding文档中的一些评论报告说iconv对日语字符集更有效.
php 抓取网页内容与图片的方法
这篇文章主要介绍了关于php 抓取网页内容与图片的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
例子1:
<?php include_once("curl.php");/*这个文件要自己配置好*/ header("content-type:text/html;charset=utf8"); $pattern_title ="/<title>(.+)/title>/";//标题匹配 $pattern_code = "/<tr><td> <p>(.+)/p><script></script>"; } echo "</p> <hr>"; /*$trans = array(" "=>",", "<br>"=>"。"); $TRANS_CONTENT = strtr($DATA_CONTENT, $trans); echo $TRANS_CONTENT; */ $DATA_CONTENT=preg_replace(''//s(?=/s)/'', '' '', $DATA_CONTENT);//(?=pattern) 正向预查 $DATA_CONTENT=preg_replace(''/[/n/r/t]/'', ''/r/n'', $DATA_CONTENT);//回车换行 $DATA_CONTENT=preg_replace(''/ /'', '' '', $DATA_CONTENT); $num=preg_match_all($pattern_code, $DATA_CONTENT, $match_code); for($i=0;$i"; } ?><p>例子2:<br></p><pre> <?php /* author: ssh_kobe date: 20110615 */ set_time_limit(0);//抓取不受时间限制 function get_pic($pic_url) { //获取图片二进制流 $data=CurlGet($pic_url); /*利用正则表达式得到图片链接 $pattern_src = '/<img .*?\"([^\"]*(jpg|bmp|jpeg|gif)).*? alt="php 抓取网页内容与图片的方法" >/';*/ $pattern_src = '/<img .*?src\=\"(.*\.jpg).*? alt="php 抓取网页内容与图片的方法" >/';//只匹配jpg格式的图片 $num = preg_match_all($pattern_src, $data, $match_src); $arr_src=$match_src[1];//获得图片数组 //get_name($arr_src); get_name_2($arr_src); echo 'End!!!<br>'; return 0; } function get_pic_2($pic_url, $base_site) { //获取图片二进制流 $data=CurlGet($pic_url); /*利用正则表达式得到图片链接*/ $pattern_src = '/<img .*?\"([^\"]*jpg).*? alt="php 抓取网页内容与图片的方法" >/';//只匹配jpg格式的图片 $num = preg_match_all($pattern_src, $data, $match_src); $arr_src=$match_src[1];//获得图片数组 $arr_src=rev_site($arr_src, $base_site); get_name($arr_src); echo 'End!!!<br>'; return 0; } /* 将图片相对地址改为绝对地址 */ function rev_site($site_list, $base_site){ foreach($site_list as $site_item) { if (preg_match('/^http/', $site_item)) { $return_list[] = $site_item; }else{ $return_list[] = $base_site.$site_item; } } return $return_list; } /*得到图片类型,并将其保存到与该文件同一目录*/ function get_name($pic_arr) { //图片类型 $pattern_type = '/(\.(jpg|bmp|jpeg|gif|png))/'; foreach($pic_arr as $pic_item){//循环取出每幅图的地址 $num = preg_match_all($pattern_type,$pic_item,$match_type); $pic_name = get_unique().$match_type[1][0];//改时微秒时间戳命名 //以流的形式保存图片 $write_fd = @fopen($pic_name,"wb"); @fwrite($write_fd, CurlGet($pic_item)); @fclose($write_fd); echo "OK.."; } return 0; } function get_name_2($pic_arr) { //图片编号和类型 $pattern_type = '/.*\/(.*?)$/'; foreach($pic_arr as $pic_item){//循环取出每幅图的地址 $num = preg_match_all($pattern_type,$pic_item,$match_type); //以流的形式保存图片 $write_fd = @fopen($match_type[1][0],"wb"); @fwrite($write_fd, CurlGet($pic_item)); @fclose($write_fd); echo 'OK..'; } return 0; } //通过微秒时间获得唯一ID function get_unique(){ list($msec, $sec) = explode(" ",microtime()); return $sec.intval($msec*1000000); } //抓取网页内容 function CurlGet($url){ $url=str_replace('&','&',$url); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); //curl_setopt($curl, CURLOPT_REFERER,$url); curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; SeaPort/1.2; Windows NT 5.1; SV1; InfoPath.2)"); curl_setopt($curl, CURLOPT_COOKIEJAR, 'cookie.txt'); curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0); $values = curl_exec($curl); curl_close($curl); return $values; } ?>
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
php打包zip图片下载的方法
立即学习“PHP免费学习笔记(深入)”;
php web请求安全处理
以上就是php 抓取网页内容与图片的方法的详细内容,更多请关注php中文网其它相关文章!
php 模拟用户抓取网页内容程序
代码如下 | 复制代码 |
function _link($url){ |
我们今天的关于php使用服务器进行远程抓取百度网页内容和php使用服务器进行远程抓取百度网页内容的分享就到这里,谢谢您的阅读,如果想了解更多关于php curl抓取网页内容简单示例、php – 如何在抓取网页时将网页内容转换为一致的字符集?、php 抓取网页内容与图片的方法、php 模拟用户抓取网页内容程序的相关信息,可以在本站进行搜索。
本文标签: