【问题标题】:Hi, I am trying to parse google results page to extract all the URL's嗨,我正在尝试解析谷歌结果页面以提取所有 URL
【发布时间】:2020-12-01 19:18:06
【问题描述】:

我已尝试使用以下代码从 google 搜索结果中获取所有 URL 的列表。但我能够找到带有描述的 URL。我只想获取 URL 作为列表。

<?php
include('simple_html_dom.php');
function file_get_contents_curl($url)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Set curl to return the data instead of printing it to the browser.
  curl_setopt($ch, CURLOPT_URL, $url);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}
$query      = "what is a car";
$url        = 'http://www.google.com/search?q=' . urlencode($query) . '';
$scrape     = file_get_contents_curl($url);
//gettype($scrape); 
//echo $scrape;
$domResults = new simple_html_dom();
$domResults->load($scrape);
foreach ($domResults->find('a[href^=/url?q]') as $element) {
  echo $element . '<br><br>';
}
?>

【问题讨论】:

    标签: php parsing dom google-search


    【解决方案1】:

    更改最后一个循环:

    $result = "";
    foreach($domResults->find('a[href^=/url?q]') as $element) {
        $result .=  $element->href."\n";
        //echo $element.'<br><br>';
    }
    file_put_contents("myresult.txt", $result, FILE_APPEND);
    

    但你只能用这个来做同样的事情:)(加上你最后的 2 个“需求”)

    <?php
    include ('simple_html_dom.php');
    $query = "what is a car";
    $html = file_get_html('http://www.google.com/search?q='.urlencode($query));
    $result = "";
    foreach($html->find('a[href^=/url?q]') as $element) {
       $url = $element->href;
       $url = str_replace("/url?q=","",$url);
       $result .=  $url."\n";
       echo "<a href='".$url."'>".$url."</a><br>";
    
    }
    file_put_contents("myresult.txt", $result, FILE_APPEND);
    ?>
    

    【讨论】:

    • 嗯,这有点帮助。但我想将结果作为一个列表,我可以将其存储为文本文件。
    • 我得到的结果也是无法打开的链接。你能帮帮我吗
    • 我编辑了保存到文件的响应(删除 FILE_APPEND 选项以在每次更新时覆盖文件。另一方面,在您想要保存在文件中的消息中,第二个是能够点击它......你必须决定;)要恢复可点击的链接,你必须删除开头的“/ url?q =”然后通过标签使用url
    • 致命错误:未捕获错误:调用 C:\xampp\htdocs\tutorial youtube\website links.php:10 中的未定义函数 file_put_content() 堆栈跟踪:#0 {main} 在 C 中抛出: \xampp\htdocs\tutorial youtube\website links.php 在第 10 行
    • 这将是我的最后一个答案,因为你一直在问新问题,甚至没有验证我与你最初问题相关的答案,你就没有玩游戏。 => list ($url, $tmp) = explode ("&", $url, 2);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2011-05-03
    • 2021-05-27
    • 2018-12-19
    相关资源
    最近更新 更多