采集PHP中文网的技术文章方法与实践
更新:2022-10-31 12:09:06
人气:760
来源:本站原创
A+
每天写技术文章很累也很烦,如果能采集数据就简单多了,今天实践一下如何采集PHP中文网的数据,只是用于测试最好还是以自己的原创文章为主哦。我只是提供PHP采集编程代码的思路和方法,不推荐用这种方法充实自己内容。
自己首先想到的是用正则表达式提取title和内容,但今天换一个方法,采用截取指定字符串出现的位置标记进行截取。
PHP采集指定网址数据的具体代码:
<?
function get_between($input, $start, $end) {//提取内容
$substr = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
return $substr;
}
function get_between_replace($input, $start, $end, $fangshi) {//提取范围内的内容替换 fangshi=1,替换本身,0,不替换本身
$conne_str = substr($input, strlen($start)+strpos($input, $start),(strlen($input) - strpos($input, $end))*(-1));
if ($fangshi==1){
$conne_str = str_replace($start,'',$conne_str);
$conne_str = str_replace($end,'',$conne_str);
}
return $conne_str;
}
function getSslPage($url) {
$ch = curl_init();
$header = array (
'User-Agent: Mozilla/5.0 (Windows NT 5.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36','X-FORWARDED-FOR:154.125.25.15', 'CLIENT-IP:154.125.25.15'
);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);// 跳过证书检查
curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //构造用户IP
curl_setopt($ch, CURLOPT_REFERER, "https://www.baidu.com/");//构造来路
curl_setopt($ch, CURLOPT_HEADER, false);//获取Header
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
//读取HTML内容
$get_url = " //被采集文章的指定链接地址
$get_htm = getSslPage($get_url);
$v_title = get_between($get_htm, "<h1>", "</h1>");//截取标记,开始和结尾
echo "文章标题:".$v_title;
echo "<br />";
$v_content = get_between($get_htm, "<div class='content'>", "<p>本篇文章就是");//截取标记,开始和结尾
$v_content = str_replace('<div class="contentsignin">登录后复制</div>','',$v_content); //替换删除
$v_content = get_between_replace($v_content,'<blockquote>','</blockquote>',1);
$v_content = str_replace('<span class="content_article_viewer_show">','<p>',$v_content); //调整PHP100中的BUG,span与P不对应
$v_content = str_replace('<code style="position:relative; padding:0px; margin:0px;">','<code>',$v_content); //清除格式
$v_content = str_replace('<p>','<p style="text-indent: 2em; text-align: left;">',$v_content); //增加缩进格式
$pattern_img='/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i';//正则过滤图片
$v_content = preg_replace($pattern_img, '', $v_content);
$v_content = str_replace('<p style="text-align: center;"></p>','',$v_content); //替换删除
echo "文章内容:".$v_content;
?>推荐的文章
随手记
- ● 统信UOS系统如何设置指定时间自动重启系统的方法
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题
- ● PHP实现计算CRC-16/MODBUS校验位








