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

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

6个月前 (08-02)技术知识590

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);
 
?>

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

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

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

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

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

宝塔计划任务Shell执行命令删除某个文件目录

宝塔计划任务Shell执行命令删除某个文件目录

有一些缓存文件没有及时自动删除,导致服务器数据盘被占满,如果你的服务器是宝塔版面的话就好解决了,在宝塔计划任务中添加Shell脚本任务即可,可以设定在每个时间段执行命令删除。第一种,删除文件目录及里面的全部文件。rm -rfv /www/wwwroot/runtime这个命令就是...

Discuz! X if判断数据输出

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

mysql清空数据表中的某个字段的值和删除指定数据表的值

mysql清空数据表中的某个字段的值和删除指定数据表的值

要清空MySQL数据表中某个字段的值,可以使用UPDATE语句将该字段设置为NULL或者空字符串''(对于字符串字段),或者一个默认值,具体取决于字段是否允许NULL。 以下是一个将字段column_name清空的示例代码:UPDATE table_name ...

推荐最新的免费虚拟主机

不花一分钱也可以做网站,国内的基本没有免费的空间,现在给大家推荐国外的免费虚拟主机,有需要的站长可以申请玩玩,拿来练练手还是不错的,毕竟是免费的,切记不要拿来正式做站,免费无保障避免数据被删除。https://free.sprinthost.ru/俄罗斯的,空间有插入广告  https:...

发表评论

访客

看不清,换一张

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