当前位置:首页 > 技术知识 > 正文内容

php抓取网页指定位置内容 并替换部分内容

2个月前 (08-02)技术知识240

php抓取网页指定位置内容的案例代码

<?php
//https-cur
function curl($url){
        $ch=curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是       
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data=curl_exec($ch);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);
        curl_setopt($ch,CURLOPT_REFERER,$url);       
        curl_close($ch);
        return $data;
}

$url = '这里是要抓取的页面网址';
$info= curl($url);
preg_match('/url=\'(.*?)\';//想抓的位置
          var/iUs',$info,$m);
$url1 = $m[1];//抓到的内容还想继续处理不要打印出来
$url2 = "https://网址$url1";//这里多种用法不添加符号可以直接使用$url1,加符号必须是双引号
$info= curl($url2);
preg_match('/"url": "(.*?)"[^>]*视频链接/iUs',$info,$p);//处理内容的位置
print_r($p[1]);//打印出来
?>

不知道是否能够返回值,可以使用print_r(要打印的内容)进行查询是否有数据值,以上内容可以无限循环处理。

还有就是有时候php网页抓取乱码问题,下面这一行代码可以解决。

<?php
header("Content-type: text/html; charset=gbk");//第一个办法,添加这行代码,可以解决乱码这个问题,抓取的网页编码是什么就填写什么,有时候会失败
function curl($url){
        $ch=curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是       
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data=curl_exec($ch);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);
        curl_setopt($ch,CURLOPT_REFERER,$url);       
        curl_close($ch);
        return $data;
}
error_reporting(0);
$url = empty($_GET['url']) ? $_GET['vid'] : $_GET['url'];//这里是获取内容的网址
$info= curl($url);
$info = mb_convert_encoding($info, 'utf-8','GBK');//这里是对网页进行转码,推荐使用这个,意思是GBK转utf-8
preg_match('/开始位置(.*?)结束位置/iUs',$info,$m);//这里是获取内容的位置
print_r($m[1]);?>

最简单的抓取代码

<?php
function curl($url){
        $ch=curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是        
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data=curl_exec($ch);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);
        curl_setopt($ch,CURLOPT_REFERER,$url);        
        curl_close($ch);
        return $data;
}

error_reporting(0);

$url = empty($_GET['url']) ? $_GET['vid'] : $_GET['url'];//这里是获取内容的网址
$info= curl($url);
preg_match('/开始的位置(.*?)结束/iUs',$info,$m);//这里是获取内容的位置

print_r($m[1]);

?>

上面的(.*?)是你要获取的内容。

如果想替换抓取到的内容某个关键词,可以直接添加如下代码;

str_replace("你想要替换掉的关键词比如 资源库","替换成功的关键词",$output);

可以灵活使用,下面列出完整代码;

<?php
/**
 * 用cURL抓取网页信息并替换部分内容
 * User: Ollydebug
 * Date: 2015/11/11
 * Time: 19:13
 */
 
$curlobj = curl_init();   //初始化
curl_setopt($curlobj,CURLOPT_URL,"http://www.baidu.com");   //设置访问网页的URL
curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true);          //执行之后不直接打印出来
 
$output = curl_exec($curlobj);
curl_close($curlobj);
echo str_replace("要替换的关键词","你要代替的关键词",$output);
 
?>

扫描二维码推送至手机访问。

版权声明:本文由资源库发布,如需转载请注明出处。

本文链接:http://it.dg5.net/post/17.html

标签: php代码
分享给朋友:

“php抓取网页指定位置内容 并替换部分内容” 的相关文章

php判断用户是电脑pc访问还是手机访问并显示相关内容

使用php判断用户是pc访问还是手机访问并根据需要显示不同内容,下面的PHP 判断访问来自手机端还是PC端。<?php function isMobileAgent() {   $bool = false;   $u...

Discuz! X if判断数据输出

主要是判断是否需要显示,代码意思{if 判断这个数值 == '等于这个值'}如果是等于就输出这里{else}如果不等于就输出这里,当然这里可以不输出,留空白{/if},代码如下;{if $_G['forum'] == '数据...

php通过json网址获取数据指定提取某个值并打印显示出来

php通过json网址获取数据指定提取某个值并打印显示出来,下面举例;要从JSON网址获取数据并提取models中所有名为hlsPlaylist的值,可以使用cURL来获取网址内容,然后使用json_decode将其转换为PHP数组,再遍历数组提取所需值。以下是一个示例代码:<?php //...

Linux安装1Panel版面的时候出现无法下载安装的解决方法

Linux安装1Panel版面的时候出现无法下载安装的解决方法

Linux安装1Panel版面的时候出现无法下载安装的解决方法,我这边的系统是CentOS,安装的1Panel出现quick_start.sh: line 66: tar: command not found,无法下载安装,这个是因为你的服务器缺少tar命令来解压文件,只要安装tar脚本即可。例如,...

hbuilderx打包网址成为5+app 向左滑动返回直接退出app的解决方法

使用hbuilderx打包网址成为5+app出现的问题,向左滑动返回直接退出app,而不是返回上一级,这个我在网上找了很多方法都没有解决,最后发现的是没有引入mui.min.js文件,要不然你写再多的JavaScript代码都解决不了。如果你打包的是网页,直接在html网页引入JavaScript并...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。