我正在创建一个使用PHP file_get_contents函数抓取Google搜索结果的网站。我已经问过它here,他们告诉我应该在页面完全加载后加载页面,但是我应该怎么做?
我的问题是我想读出结果,如果我去google.com,每个标题都是H3。但是当我加载它时,每个标题都有一个唯一的类。
我的代码
<?php
require 'simple_html_dom.php';
echo '
<link rel="stylesheet" href="search.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="shortcut icon" type="image/png" href="favicon.png" />
<body><div class="container">
';
$query = $_GET['q'];
if($query == '') {
echo '<script type="text/javascript">window.location.href="index.html";</script>';
}
echo '<title>'.$query.' | SearchAda</title>';
echo '
<form action="search.php" method="get">
<a href="index.html"><h1 class="brand">SearchAda</h1></a>
<div class="input-group">
<input type="text" name="q" value="'.$query.'" placeholder="Typ uw zoekopdracht..." />
<i class="fa fa-search"></i>
</div>
</form>
';
$url = 'https://www.google.com/search?q='.str_replace(' ','+',$query);
$doc = file_get_html($url);
echo $doc;
?>
如果您只是下载网站的源代码并尝试显示它,则会遇到问题。所有相关资源(<link rel="/...">
<script src="/..."
和图像)都需要下载或修改以直接使用原始资源(您可能会因此遇到访问问题)。这也会使许多网站上的某些脚本和CORS出现问题。
看起来您正在寻找的是HTML Renderer,用于处理网站并为您提供真实的结果。仅仅下载页面和资产还不够,它们将需要一些基本处理(另请参阅网络搜寻器/蜘蛛)。