php - 无法使用 file_get_contents 获取页面内容
问题描述
尝试获取页面内容file_get_contents
页面: http: //www.sapporo-keihan.jp/maruyama/outline
function pageContent(String $url): \DOMDocument
{
$html = cache()->rememberForever($url, function () use ($url) {
$opts = [
"http" => [
"method" => "GET",
"header" => "Accept: text/html\r\n"
]
];
$context = stream_context_create($opts);
$file = file_get_contents($url, false, $context);
return $file;
});
$parser = new \DOMDocument();
libxml_use_internal_errors(true);
$parser->loadHTML($html = mb_convert_encoding($html,'HTML-ENTITIES', 'ASCII, JIS, UTF-8, EUC-JP, SJIS'));
return $parser;
}
$html = pageContent("http://www.sapporo-keihan.jp/maruyama/outline");
$path = new \DOMXPath($html);
$catch = $path->query("//body");
foreach ($catch as $found){
$site = trim($found->nodeValue);
}
但我无法正确返回内容。它给了我页面的css,而不是内容。该功能有什么问题。是什么导致了这个问题。谢谢!
解决方案
似乎对于这个 url,服务器默认返回 css。指定 httpAccept: text/html
标头以解决此问题。
您可以通过以下方式进行操作:
$opts = [
"http" => [
"method" => "GET",
"header" => "Accept: text/html\r\n"
]
];
$context = stream_context_create($opts);
$file = file_get_contents($url, false, $context);
推荐阅读
- xml - 在 Python 中输出 os.system 并使用它在 xml 文件中创建文本节点
- javascript - Javascript - 如何对 fetch 的非 200 响应发出警报?
- visual-studio - 如何下载 Visual Studio Community 2019 预览版(非企业版)
- php - 使用 PHP 删除字符串中的 HTML 图像链接字符串
- apache - 使用 NiFi 更新 CSV 内字段中的值
- java - 如何解决此问题 Spring Boot 应用程序?
- javascript - 我试图了解 indexOf
- file - 如何选择新文件格式的文件扩展名
- javascript - input() 函数执行上下文会在 check() 函数执行上下文中吗?
- android - 无法在带有 Kotlin 的 Android 中使用 Autodispose