采集PHP中文网的技术文章方法与实践
更新:2022-10-31 12:09:06
人气:701
来源:本站原创
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; ?>
推荐的文章
随手记
- ● 自制(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文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP给TCP服务端发送指令【系列二】
- ● PHP判断TCP服务端是否在线【系列一】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题