0

0

PHP怎么制作简单爬虫_PHP实现网页内容抓取方法【技巧】

星夢妙者

星夢妙者

发布时间:2026-02-11 11:04:46

|

474人浏览过

|

来源于php中文网

原创

PHP网页抓取有四种方法:一、file_get_contents配正则,适用于静态页;二、cURL加DOMDocument,稳定且支持结构化解析;三、Goutte库,支持CSS选择器与交互逻辑;四、simple_html_dom,语法简捷但性能较低。

php怎么制作简单爬虫_php实现网页内容抓取方法【技巧】

如果您希望使用PHP从目标网页中提取特定内容,但缺乏系统性的抓取逻辑,则可能是由于未选择合适的HTTP请求方式或DOM解析策略。以下是实现网页内容抓取的几种具体方法:

一、使用file_get_contents配合正则表达式

该方法适用于结构简单、无JavaScript渲染的静态页面,通过内置函数获取原始HTML字符串,再用正则匹配目标文本片段。注意需启用allow_url_fopen配置且目标站点允许直接访问。

1、在PHP脚本开头检查并设置流上下文选项,添加User-Agent头避免被拒绝:stream_context_set_default(['http' => ['user_agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36']])

2、调用file_get_contents函数传入目标URL,捕获返回的HTML内容:$html = file_get_contents('https://example.com');

立即学习PHP免费学习笔记(深入)”;

3、编写精准的preg_match或preg_match_all模式,例如提取所有标签内的href属性:preg_match_all('/]+href=["\']([^"\']+)["\']/i', $html, $matches);

二、使用cURL结合DOMDocument解析

此方案更稳定可靠,支持自定义请求头、Cookie、超时控制,并利用PHP原生DOM扩展进行结构化节点遍历,适合处理嵌套层级明确的HTML文档。

1、初始化cURL句柄并设置必要选项,包括CURLOPT_RETURNTRANSFER设为true、CURLOPT_FOLLOWLOCATION设为true、CURLOPT_USERAGENT设为常见浏览器标识:$ch = curl_init(); curl_setopt_array($ch, [$options]);

2、执行请求并获取响应体:$html = curl_exec($ch); curl_close($ch);

3、创建DOMDocument实例并加载HTML内容,启用libxml_use_internal_errors(true)忽略解析警告:$dom = new DOMDocument(); @$dom->loadHTML($html);

4、使用getElementsByTagName或querySelector-like方式(需配合DOMXPath)定位元素,例如提取全部h1文本:$h1List = $dom->getElementsByTagName('h1'); foreach ($h1List as $h1) echo $h1->textContent . "\n";

三、使用Goutte库模拟浏览器行为

Goutte是基于Symfony BrowserKit和DomCrawler组件的轻量级爬虫工具,支持CSS选择器语法,可自动处理重定向与基础表单提交,适合需要交互逻辑的场景。

1、通过Composer安装Goutte:composer require fabpot/goutte

2、在脚本中引入自动加载器并实例化Client对象:require_once 'vendor/autoload.php'; use Goutte\Client; $client = new Client();

3、调用$client->request()发送GET请求,返回Crawler实例:$crawler = $client->request('GET', 'https://example.com');

4、使用filter()方法配合CSS选择器提取节点,如获取所有class为title的div文本:$titles = $crawler->filter('.title')->each(function ($node) { return $node->text(); });

四、使用simple_html_dom类库快速提取

simple_html_dom提供类似jQuery的操作风格,语法直观易懂,适合快速原型开发或小型抓取任务,但性能低于原生DOM扩展。

1、下载simple_html_dom.php文件并包含进当前脚本:include 'simple_html_dom.php';

2、调用file_get_html()加载远程URL或str_get_html()加载字符串内容:$html = file_get_html('https://example.com');

3、使用find()方法按标签名、类名、ID等条件筛选元素,例如查找第一个img标签的src属性:$imgSrc = $html->find('img', 0)->src;

4、遍历结果集时注意释放内存,结束前调用clear()方法:$html->clear();

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
PHP Symfony框架
PHP Symfony框架

本专题专注于PHP主流框架Symfony的学习与应用,系统讲解路由与控制器、依赖注入、ORM数据操作、模板引擎、表单与验证、安全认证及API开发等核心内容。通过企业管理系统、内容管理平台与电商后台等实战案例,帮助学员全面掌握Symfony在企业级应用开发中的实践技能。

82

2025.09.11

composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

158

2023.12.25

jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

153

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

317

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

403

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

508

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

229

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

124

2024.02.23

Rust异步编程与Tokio运行时实战
Rust异步编程与Tokio运行时实战

本专题聚焦 Rust 语言的异步编程模型,深入讲解 async/await 机制与 Tokio 运行时的核心原理。内容包括异步任务调度、Future 执行模型、并发安全、网络 IO 编程以及高并发场景下的性能优化。通过实战示例,帮助开发者使用 Rust 构建高性能、低延迟的后端服务与网络应用。

1

2026.02.11

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 11.5万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.2万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

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

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