0

0

[麦先生]使用正则做一个简单的数据采集 - 麦先生

php中文网

php中文网

发布时间:2016-05-20 10:19:20

|

1606人浏览过

|

来源于php中文网

原创

    网上有的朋友在去面试过程中有被要求去做数据采集工作的,但是由于对正则匹配运用的的不熟悉,而陷入了学而无以致用局面尴尬局面;做为新人我自己用所学过的知识尝试着做了一个网站详情页部分信息的数据采集,其中有逻辑不严谨或者应用不恰当的地方欢迎各位大神斧正;

    做数据采集的流程:

      进入一个网站后首先要查看网页源代码,审查检测源代码中是否存在我们需要的内容,如果有则可以直接使用正则匹配的方式来进行数据的抓取和提取;

      假如我们需要的内容是由网站的js动态生成的,我们就不能直接对网站进行正则匹配的方式进行数据抓取,这时我们需要打开(注:我用的火狐)Firebug网络中查看服务器传输回的数据里可以找到服务器返回的源码,反而更加便捷;

      在PHP中有一些内置的函数可以帮助我们更快捷的抓取网页源代码比如:file_get_contents; 包括正则匹配里常用的preg_match,preg_match_all;正确并熟练的使用PHP内置函数和方法可以极大节省我们的时间;

      

class PHP1
{
/**
* 采集详情页
*/
public function getDetailPage($url)
{
//获取源代码
$str = Curl::get($url);

//提取标题内容
preg_match('/

(.*).*发布日期:(.*)  来源.*
(.*).*
.*转载请注明来源.*.*(.*)转载请注明来源.*/isU', $str, $temp);

//创建pdo对象
$pdo = new PDO('mysql:host=localhost;dbname=lamp;charset=utf8;port=3306','root','');

//发送预处理指令
$stmt = $pdo->prepare('insert into article (title, con, intro, time)values(:title, :con, :intro, :time)');

//参数的绑定
$arr = array(
':title'=>$temp[1],
':con'=>$temp[4],
':intro'=>$temp[3],
':time'=>$temp[2]
);
$stmt->execute($arr);

$id = $pdo->lastInsertId();

return $id;
}

RecoveryFox AI
RecoveryFox AI

AI驱动的数据恢复、文件恢复工具

下载

/**
* 采集列表页 获取详情页的url
*/
public function getListUrl($url)
{
//获取当前列表页中的源代码
$data = Curl::get($url);

if(empty($data)){
return false;
}
//正则匹配
preg_match_all('/

  • .*
    .*

    /isU', $data, $temp);
    //返回结果
    return $temp[1];
    }

    /**
    * 开始采集
    */
    public function startCollect(){
    $urls = $this->getListUrl('http://www.php1.cn/category/44.html');
    //遍历
    foreach ($urls as $key => $value) {
    $this->getDetailPage($value);
    }
    }
    }

    /**
    * curl工具类
    */
    class Curl{
    public static function get($url){
    //初始化curl资源
    $ch = curl_init($url);
    //设置请求选项
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    //发送请求
    $res = curl_exec($ch);
    //
    return $res;
    }
    }

    // $res = get('http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html');

    //创建对象
    // $obj = new PHP1;

    // $url = 'http://www.php1.cn/Content/XiaoXinGaoXiaoLvDe_sql_ChaXunTaYeHuiDaoZhiWangZhanXiangYingBianMan.html';
    // $res = $obj->getDetailPage($url);

    //读取列表页的内容
    // $obj->getListUrl('http://www.php1.cn/category/44.html');

    // $obj -> startCollect();

    //如果代码报错 curl_init undefined
    //wampserver->php->php extensions->php_curl

          

  • 本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热门AI工具

    更多
    DeepSeek
    DeepSeek

    幻方量化公司旗下的开源大模型平台

    豆包大模型
    豆包大模型

    字节跳动自主研发的一系列大型语言模型

    通义千问
    通义千问

    阿里巴巴推出的全能AI助手

    腾讯元宝
    腾讯元宝

    腾讯混元平台推出的AI助手

    文心一言
    文心一言

    文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

    讯飞写作
    讯飞写作

    基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

    即梦AI
    即梦AI

    一站式AI创作平台,免费AI图片和视频生成。

    ChatGPT
    ChatGPT

    最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

    相关专题

    更多
    俄罗斯Yandex引擎入口
    俄罗斯Yandex引擎入口

    2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

    178

    2026.01.28

    包子漫画在线官方入口大全
    包子漫画在线官方入口大全

    本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

    35

    2026.01.28

    ao3中文版官网地址大全
    ao3中文版官网地址大全

    AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

    79

    2026.01.28

    php怎么写接口教程
    php怎么写接口教程

    本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

    2

    2026.01.28

    php中文乱码如何解决
    php中文乱码如何解决

    本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

    4

    2026.01.28

    Java 消息队列与异步架构实战
    Java 消息队列与异步架构实战

    本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

    8

    2026.01.28

    Python 自然语言处理(NLP)基础与实战
    Python 自然语言处理(NLP)基础与实战

    本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

    24

    2026.01.27

    拼多多赚钱的5种方法 拼多多赚钱的5种方法
    拼多多赚钱的5种方法 拼多多赚钱的5种方法

    在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

    122

    2026.01.26

    edge浏览器怎样设置主页 edge浏览器自定义设置教程
    edge浏览器怎样设置主页 edge浏览器自定义设置教程

    在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

    72

    2026.01.26

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送

    Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号