”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 尽管出现“页面已移动”错误,如何使用 cURL 检索页面内容?

尽管出现“页面已移动”错误,如何使用 cURL 检索页面内容?

发布于2024-11-09
浏览:549

How to Retrieve Page Content Using cURL Despite \

使用 cURL 检索页面内容

在此上下文中,您试图使用 cURL 抓取 Google 搜索结果页面的内容。尽管尝试设置用户代理和各种选项,但您仍无法成功检索页面内容。重定向或“页面移动”错误继续困扰着您。

据信该问题可能源于查询字符串中特殊字符的编码。为了缓解这种情况,需要更改 PHP 代码。

方法如下:

function get_web_page($url)
{
    $user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

    $options = array(
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_POST           => false,
        CURLOPT_USERAGENT      => $user_agent,
        CURLOPT_COOKIEFILE     => "cookie.txt",
        CURLOPT_COOKIEJAR      => "cookie.txt",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER         => false,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_ENCODING       => "",
        CURLOPT_AUTOREFERER    => true,
        CURLOPT_CONNECTTIMEOUT => 120,
        CURLOPT_TIMEOUT        => 120,
        CURLOPT_MAXREDIRS      => 10
    );

    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $content = curl_exec($ch);
    $err = curl_errno($ch);
    $errmsg = curl_error($ch);
    $header = curl_getinfo($ch);
    curl_close($ch);

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

用法:

$result = get_web_page($url);

if ($result['errno'] != 0) {
    // Handle errors: bad URL, timeout, redirect loop
}

if ($result['http_code'] != 200) {
    // Handle errors: no page, no permissions, no service
}

$page = $result['content'];

使用此代码,您现在可以检索浏览器中显示的确切页面内容。通过考虑查询字符串中的特殊字符,您可以克服之前遇到的障碍。

版本声明 本文转载于:1729596678如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-09
  • 如何消除 Bootstrap 堆叠行中的间隙:综合指南
    如何消除 Bootstrap 堆叠行中的间隙:综合指南
    Bootstrap 堆叠行中的间隙:综合解决方案Bootstrap 堆叠行中存在间隙对于开发人员来说可能是一个令人沮丧的问题。为了解决这个问题,有几种有效的解决方案可用。1。设置元素高度标准化:为所有投资组合元素分配固定高度可确保内容的均匀分布。这消除了不同元素尺寸导致间隙的可能性。2。使用 Mas...
    编程 发布于2024-11-09
  • 为什么使用“shell_exec”从 PHP 调用时我的 Bash 脚本无法执行?
    为什么使用“shell_exec”从 PHP 调用时我的 Bash 脚本无法执行?
    从 PHP 执行 Bash 命令:脚本执行失败故障排除在这个问题中,我们遇到一位 PHP 开发人员尝试使用 shell_exec 从 PHP 执行 bash 脚本。使用的语法为:$output = shell_exec("./script.sh var1 var2");但是,调用...
    编程 发布于2024-11-09
  • 为什么按钮不拉伸以用“display: block”和“width: auto”填充容器?
    为什么按钮不拉伸以用“display: block”和“width: auto”填充容器?
    为什么“display: block”和“width: auto”不能拉伸按钮来填充容器?当使用“display: block”和“ width: auto” 在按钮上,它可能会拉伸并填充其容器。然而,情况并非总是如此。特别是,现代浏览器中的按钮在这方面的行为与其他块元素不同。这种行为背后的原因在于...
    编程 发布于2024-11-09
  • 在 Docker 容器上设置 Redmine
    在 Docker 容器上设置 Redmine
    Redmine 是一个灵活的开源项目管理和问题跟踪 Web 应用程序。它广泛用于管理项目、跟踪错误以及处理任务和截止日期。 Redmine 使用 Ruby on Rails 开发,具有高度可定制性,支持广泛的团队协作和项目组织功能。 Redmine 因其灵活性、定制性和开源特性而成为商业项目管理工具...
    编程 发布于2024-11-09
  • 哪种 HTML5 Reset CSS 提供最全面的覆盖范围?
    哪种 HTML5 Reset CSS 提供最全面的覆盖范围?
    哪种 HTML5 Reset CSS 提供广泛的覆盖范围?大量的浏览器版本给网页设计带来了挑战,需要使用重置CSS 确保跨平台的样式一致。然而,鉴于可用选项过多,选择正确的重置 CSS 可能会令人畏惧。html5reset.org 拥有全面的覆盖范围,不仅包括重置填充和边距,还包括解决图像的潜在问题...
    编程 发布于2024-11-09
  • 棘手的 Golang 面试问题 - 部分数据竞赛
    棘手的 Golang 面试问题 - 部分数据竞赛
    Here is another code review interview question for you. This question is more advanced than the previous ones and is targeted toward a more senior aud...
    编程 发布于2024-11-09
  • 如何在 Python 中按列值对散点图进行颜色编码?
    如何在 Python 中按列值对散点图进行颜色编码?
    Python 中按列值对散点图进行颜色编码在数据可视化中,为不同类别分配颜色可以增强清晰度并揭示模式。此功能在 R 的 ggplot2 中很容易使用,但是我们如何使用 pandas 和 matplotlib 在 Python 中实现相同的功能?更新:Seaborn 增强功能Since 原始答案,Se...
    编程 发布于2024-11-09
  • 如何将日期转换为数字格式以进行绘图?
    如何将日期转换为数字格式以进行绘图?
    将日期转换为数字格式以进行绘图当日期以不同格式存储时,根据日期绘制数据可能具有挑战性,例如“1991 年 1 月 2 日。”本文提供了一种将日期转换为可以轻松在 x 轴上绘制的数字格式的解决方案。如问题中所述,使用 strftime('%Y%m%d') 转换日期仅靠这一点可能还不够。...
    编程 发布于2024-11-09
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-09
  • 如何使用 JavaScript 在 Android 浏览器中可靠地检测设备旋转?
    如何使用 JavaScript 在 Android 浏览器中可靠地检测设备旋转?
    使用 JavaScript 检测 Android 浏览器中的设备旋转检测旋转的兼容性挑战使用 JavaScript 检测设备旋转与具有明确定义方法的 iPhone 相比,Android 手机上的浏览器可能更具挑战性。 Android 设备上的行为可能不一致,事件的顺序和频率以及 screen.wid...
    编程 发布于2024-11-09
  • 在 JavaScript 中缓存数组长度比直接长度访问更快吗?
    在 JavaScript 中缓存数组长度比直接长度访问更快吗?
    优化 JavaScript 中的数组迭代:缓存长度与直接长度访问循环数组是 JavaScript 中的基本操作。但最快的方法是什么?传统观点认为,缓存数组的长度可以通过避免重复计算来提高性能。然而,一些人认为现代编译器优化了直接长度访问。争论:缓存与直接访问传统上,推荐的方法是缓存数组长度: for...
    编程 发布于2024-11-09
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为的主要场景bool:语句:if、whi...
    编程 发布于2024-11-09
  • 如何使用纯 JavaScript 切换元素类?
    如何使用纯 JavaScript 切换元素类?
    使用纯 JavaScript 切换元素类:综合指南简介在 JavaScript 中,控制元素类对于动态 Web 开发至关重要。一项常见任务是切换类以更改元素的外观或功能。虽然 jQuery 使这项任务变得简单,但了解如何使用纯 JavaScript 来完成它是至关重要的。jQuery 解决方案和 J...
    编程 发布于2024-11-09
  • 如何使用 Base64 对 OpenSearch 插件的图像进行编码?
    如何使用 Base64 对 OpenSearch 插件的图像进行编码?
    为 OpenSearch 插件编码图像为 Firefox 或 IE 等浏览器开发 OpenSearch 插件时,base64 编码对于表示图像至关重要。具体实现方法如下:方法一:在线编码访问在线文件编码网站,例如[Base64 Encode](https:// /www.base64encode.o...
    编程 发布于2024-11-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3