使用PHP获取网页内容的多种方法

简介: /** * 使用PHP获取网页内容的多种方法案例分享 */

<?php


/**

* 使用PHP获取网页内容的多种方法

*/


$url = 'https://onehaoka.com/979642961.html';

$url = 'https://onehaoka.com/979642962.html';

$url = 'https://onehaoka.com/979642963.html';

$url = 'https://onehaoka.com/979642964.html';

$url = 'https://onehaoka.com/979642965.html';

$url = 'https://onehaoka.com/979642966.html';

$url = 'https://onehaoka.com/979642967.html';

$url = 'https://onehaoka.com/979642968.html';


// 方法1: 使用 file_get_contents (最简单的方法)

function getContentByFileGetContents($url) {

   // 设置上下文选项,模拟浏览器访问

   $context = stream_context_create([

       'http' => [

           'method' => 'GET',

           'header' => [

               'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

               'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

               'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',

           ],

           'timeout' => 30,

           'follow_location' => true,

       ],

       'ssl' => [

           'verify_peer' => false,

           'verify_peer_name' => false,

       ],

   ]);

   

   $content = @file_get_contents($url, false, $context);

   return $content;

}


// 方法2: 使用 cURL (推荐的方法,功能更强大)

function getContentByCurl($url) {

   $ch = curl_init();

   

   // 设置cURL选项

   curl_setopt($ch, CURLOPT_URL, $url);

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

   curl_setopt($ch, CURLOPT_TIMEOUT, 30);

   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

   

   // 设置请求头,模拟浏览器

   curl_setopt($ch, CURLOPT_HTTPHEADER, [

       'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

       'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

       'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8',

   ]);

   

   $content = curl_exec($ch);

   

   if (curl_errno($ch)) {

       echo 'cURL Error: ' . curl_error($ch) . "\n";

       curl_close($ch);

       return false;

   }

   

   $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

   curl_close($ch);

   

   if ($httpCode !== 200) {

       echo "HTTP Error: " . $httpCode . "\n";

       return false;

   }

   

   return $content;

}


// 方法3: 使用 Guzzle HTTP 客户端 (需要安装: composer require guzzlehttp/guzzle)

function getContentByGuzzle($url) {

   // 请确保已安装 Guzzle: composer require guzzlehttp/guzzle

   if (!class_exists('GuzzleHttp\Client')) {

       echo "请先安装 Guzzle: composer require guzzlehttp/guzzle\n";

       return false;

   }

   

   try {

       $client = new \GuzzleHttp\Client([

           'timeout' => 30,

           'verify' => false,

           'headers' => [

               'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',

               'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

           ],

       ]);

       

       $response = $client->get($url);

       return $response->getBody()->getContents();

   } catch (Exception $e) {

       echo 'Guzzle Error: ' . $e->getMessage() . "\n";

       return false;

   }

}


// ============ 使用示例 ============


echo "=== 使用 cURL 获取网页内容 ===\n";

$content = getContentByCurl($url);


if ($content !== false) {

   echo "成功获取内容,长度: " . strlen($content) . " 字节\n\n";

   

   // 保存到文件

   file_put_contents('page_content.html', $content);

   echo "内容已保存到 page_content.html\n";

   

   // 显示前1000个字符

   echo "\n=== 内容预览 (前1000字符) ===\n";

   echo substr($content, 0, 1000);

   echo "\n... (内容已截断)\n";

} else {

   echo "获取内容失败\n";

}


// 备用:使用 file_get_contents

echo "\n=== 使用 file_get_contents 获取 ===\n";

$content2 = getContentByFileGetContents($url);

if ($content2 !== false) {

   echo "file_get_contents 成功,长度: " . strlen($content2) . " 字节\n";

} else {

   echo "file_get_contents 失败\n";

}


相关文章
|
9天前
|
人工智能 监控 安全
OpenClaw/Clawdbot实战攻略:3步部署+3大核心skills+5个颠覆级案例,实现“聊天框里办大事”
2026年初,一只名叫Molty的“小龙虾”席卷全球科技圈——OpenClaw(原Clawdbot、Moltbot)以72小时狂揽60,000+ GitHub Stars的速度爆红,如今星标数已突破180,000+,不仅让Mac Mini全球卖断货,更带动Cloudflare股价上涨20%。它绝非普通聊天机器人,而是“长了手的AI助理”,能通过Telegram、飞书等10+渠道主动执行任务,从网站重建、买车砍价到Bug修复,真正实现“聊天框里办大事”。
485 19
|
13天前
|
人工智能 弹性计算 监控
2026年OpenClaw/Clawdbot指南:阿里云部署、技能扩展与场景落地解析
2026年阿里云OpenClaw(原Clawdbot)的主流应用场景、官方部署规范及用户实战经验,本文将系统梳理OpenClaw的核心价值、阿里云零基础部署流程、必装技能组合、实战案例及优化技巧,全程附可直接复制的代码命令,确保内容专业、实用且符合“无隐藏消费、全场景适配”的核心特点,帮助用户快速解锁AI自动化能力。
351 9
|
2月前
|
人工智能 应用服务中间件 API
刚刚,阿里云上线Clawdbot全套云服务!
阿里云上线Moltbot(原Clawdbot)全套云服务,支持轻量服务器/无影云电脑一键部署,可调用百炼平台百余款千问模型,打通iMessage与钉钉消息通道,打造开箱即用的AI智能体助手。
4398 37
刚刚,阿里云上线Clawdbot全套云服务!
|
2天前
|
数据采集 人工智能 数据挖掘
不会带团队不用干到死:阿里云部署OpenClaw Skills,自建AI Agent,1人就是100人团队
10年前,我们曾羡慕Jarvis的全能智能;如今,借助OpenClaw的Skills生态,每个人都能打造专属的AI助手军团。OpenClaw的Skills功能将复杂工作流程封装为"一句话指令",让AI自动完成热点搜索、数据分析、内容创作等系列操作,彻底释放重复劳动时间。本文将从Skills核心概念出发,详解从基础技能创建到进阶开发的全流程,融入2026年阿里云OpenClaw极简部署步骤,附带完整代码命令与实战案例,帮助用户从零构建属于自己的AI技能生态。
184 15
|
10天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
4332 29
|
11天前
|
人工智能 自然语言处理 数据可视化
喂饭级教程:2026年OpenClaw(Clawdbot)零基础部署接入Discord
在2026年AI自动化办公与跨平台协同需求双重爆发的当下,OpenClaw(原Clawdbot、曾用名Moltbot)凭借“自然语言驱动、全场景任务自动化、多终端无缝适配”的核心优势,成为个人办公提效、轻量团队协同、在线社群管理的优选工具。作为GitHub星标量超19万的开源AI自动化代理平台,它打破了传统AI仅能对话的局限,真正实现“能听指令、能做实事”——无论是文档生成、日程提醒、文件整理,还是联网搜索、简单代码开发、跨工具协同,只需一句口语化指令,就能自动完成全流程操作,无需手动干预,完美适配现代办公与在线社群运营的高效需求,其开源特性也让用户可根据需求灵活扩展功能,适配多样化使用场景。
597 19
|
1天前
|
人工智能 缓存 API
2026年OpenClaw省钱教程:通过NVIDIA NIM 免费调用MiniMax M2.1、智谱GLM-4.7、DeepSeek V,零Token费玩转AI Agent(附阿里云百炼API-Key配置)
2026年,OpenClaw(原Clawdbot)凭借强大的自动化能力与丰富的技能生态,成为AI领域的现象级工具。但用户普遍面临一个痛点:OpenClaw依赖长上下文调用大模型,Token消耗巨大,免费模型功能有限,付费模型成本高昂。
270 14
|
2天前
|
人工智能 API 开发工具
AI Compose Commit:用 AI 智能重构 Git 提交工作流
HagiCode 推出「AI Compose Commit」功能,利用 AI 智能分析未提交变更,自动分组逻辑提交、生成符合 Conventional Commits 规范的提交信息,并一键执行。支持多仓库、异步处理与实时通知,大幅提升 Git 工作流效率,让开发者专注编码而非琐碎提交。(239字)
60 15
|
5天前
|
弹性计算 运维 应用服务中间件
2026年阿里云部署OpenClaw(Clawdbot) 接入skills与运维实战教程
2026年阿里云部署OpenClaw(Clawdbot) 接入skills与运维实战教程,以接入微信为例,2026年,OpenClaw(原Clawdbot)凭借插件化架构与自然语言驱动的自动化能力,已成为企业微信生态下私域运营、内部协同的核心赋能工具。针对企业用户对**稳定运行、合规对接、便捷运维**的核心需求,本文基于OpenClaw stable-2026.02官方稳定版,完整拆解**2026年阿里云简单部署OpenClaw的核心步骤**,涵盖轻量应用服务器镜像一键部署、ECS手动容器化部署两种主流方案,详细讲解企业微信自建应用创建、回调配置、通道绑定及核心Skills安装,全程附带可直接
230 22
|
9天前
|
关系型数据库 MySQL PHP
Discuz_X1.5_SC_UTF8怎么用?完整部署与配置指南(新手必看)
Discuz_X1.5_SC_UTF8.zip 是经典国产论坛程序 Discuz! X1.5 简体中文 UTF-8 版安装包,适用于搭建BBS社区。需PHP 5.2+/MySQL 5.0+环境,支持Apache/Nginx。含完整安装向导,操作简单,适合本地测试(XAMPP)或云服务器部署。(239字)
300 18

热门文章

最新文章