繁体   English   中英

警告:file_get_contents(): php.network_getaddresses: getaddrinfo

[英]Warning: file_get_contents(): php_network_getaddresses: getaddrinfo

我拥有一台专用服务器并安装了 CENTOS 7 并安装了 WEB 面板和 PHP 版本 8.1.13

在我尝试创建一个简单的 web 爬网脚本来运行之前,从过去 12 天开始一切都运行良好。

<?php
include ("simple_html_dom.php");
$html =file_get_html("https://www.bbc.com");
echo $html;

foreach($html-> find("div li") as $h)
{
    echo $h-> text();
}

?>

它给了我一个错误

Warning: file_get_contents(): php_network_getaddresses: getaddrinfo for www.bbc.com failed: Name or service not known in home/myserver/public_html/news/simple_html_dom.php on line 82

Warning: file_get_contents(https://www.bbc.com): Failed to open stream: php_network_getaddresses: getaddrinfo for www.bbc.com failed: Name or service not known in /home/myserver/public_html/news/simple_html_dom.php on line 82

Fatal error: Uncaught Error: Call to a member function find() on bool in home/myserver/public_html/news/tim.php:6 Stack trace: #0 {main} thrown in /home/myserver/public_html/news/tim.php on line 6

我还查找了服务器上的日志。 它也适用于许多其他域

在此处输入图像描述

为了找到解决方案,我查看了许多视频教程并阅读了几篇文章。 据我所知,这个问题是由于 DNS 服务器端配置错误造成的。 我寻找解决方案,但没有一个对我有用。 如果有人请指导我修复此 DNS 错误,我将不胜感激。

我已经检查了服务器端的基本配置,对我来说看起来非常好。 此外,我非常谨慎地打破现有配置。

您的 IP 地址似乎被封锁或临时限制。 抓取过程比仅通过 file_get_contents 获取数据要复杂得多。 你应该注意标题,cookies,也许是会话。 只是为了像普通用户一样。

此外,您可以使用公共 API。通常像 BBC 这样的大型网站都会使用它来避免 HTTP 频道的负载过大。 例如: https://apitracker.io/a/bbc-news

此外,您还可以订阅 BBC 的 RSS 提要并通过它查看更新。 组织下载内容会更容易。 例如: https://gist.github.com/mburst/5230448

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM