我正在尝试使用函数 file_get_contents($url) 来抓取一些内容。但它没有返回正确的内容。它只是返回一些脚本,我认为它们负责位置和语言检查,然后它失败并且不会继续抓取整个页面
$url = 'https://shop.bitmain.com/';
$exists;
$url_headers = get_headers($url);
if(!$url_headers || $url_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
if(filter_var($url, FILTER_VALIDATE_URL) == FALSE || $exists == false) {
$error .= '<div class="alert alert-danger" role="alert">That city could not be found.</div>';
} else if (filter_var($url, FILTER_VALIDATE_URL) == TRUE && $exists == true){
$html = file_get_contents($url);
if ($html != FALSE && $html != NULL)
echo $html
}
file_get_contents()
当涉及到加载 URL-Content 时,让我们调用一个“哑”函数。它将返回第一次加载 DOM 时呈现的内容。
要获取很多网站的实际内容,还需要遵循重定向,可以通过使用实现curl
(参考:如果发生重定向,如何在file_get_contents后获取真实URL?)
如果最终页面使用大量 AJAX 来加载数据,即使 curl 也不会提供所需的内容,而是一些没有实际内容的“裸”HTML 页面。
因此,如今,您需要手动加载异步内容,方法是解析初始 url 的内容、解析 JS 文件、获取 ajax-url 并再次调用它们,同时传递目标页面可能为您的请求生成的 cookie ...
或者使用“本地客户端”,它将像浏览器一样执行页面并能够返回最终数据。
只是调用file_get_contents("url");
并期待相同的源代码,就好像您在浏览器中调用 url 对大多数网站不再适用一样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句