嗨,我正在尝试解析谷歌结果页面以提取所有 URL

Posted

技术标签:

【中文标题】嗨,我正在尝试解析谷歌结果页面以提取所有 URL【英文标题】:Hi, I am trying to parse google results page to extract all the URL's 【发布时间】: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>';

?>

【问题讨论】:

【参考方案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);

以上是关于嗨,我正在尝试解析谷歌结果页面以提取所有 URL的主要内容,如果未能解决你的问题,请参考以下文章

使用 Beautiful Soup 提取链接的等效正则表达式

从谷歌搜索中提取结果数量

如何解析URL并提取所需的子字符串

谷歌地图没有从数据库中提取我的标记

如何在不变的URL中抓取不同城市的多个页面 - Python 3

解析具有可读性的新闻 URL