页面完全加载后的PHP file_get_contents

问题描述 投票:0回答:1

我正在创建一个使用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;

?>

一些屏幕截图-My Search Engine, SearchAda-Google's results

php search-engine file-get-contents
1个回答
0
投票

如果您只是下载网站的源代码并尝试显示它,则会遇到问题。所有相关资源(<link rel="/..."> <script src="/..."和图像)都需要下载或修改以直接使用原始资源(您可能会因此遇到访问问题)。这也会使许多网站上的某些脚本和CORS出现问题。

看起来您正在寻找的是HTML Renderer,用于处理网站并为您提供真实的结果。仅仅下载页面和资产还不够,它们将需要一些基本处理(另请参阅网络搜寻器/蜘蛛)。

How Browsers Work: Behind the scenes of modern web browsers

© www.soinside.com 2019 - 2024. All rights reserved.