在php中按日期获取谷歌趋势

时间:2011-03-19 11:54:17

标签: php

使用此Feed

  

http://www.google.co.in/trends/hottrends/atom/hourly

我们可以了解谷歌目前的趋势。

但我需要获得前一天的趋势。当前趋势中的搜索字词会经常更改,因此我尝试在当天开始时获取前一天的趋势主题 但我不知道获得前一天趋势的网址?

任何人都可以解决这个问题吗?感谢。

3 个答案:

答案 0 :(得分:3)

你可以从这里试试:http://www.fromzerotoseo.com/scraping-google-hot-trends/

<?php
// Scraping New Year’s Eve
$result = getPage(
    '[proxy IP]:[port]',
    'http://www.google.com/trends/hottrends?sa=X&date=2008-12-31',
    'http://www.google.com/trends/hottrends?sa=X',
    'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8',
    1,
    5);

if (empty($result['ERR'])) {    
    preg_match_all(
        '(<td class=num>\d+\.</td>.*<td><a href="(.*)">(.*)</a></td>)siU',
        $result['EXE'], $matches);

    // some URL tuning here…
    for ($i = 0; $i < count($matches[1]); $i++) {
        $matches[1][$i] = 'http://www.google.com' . $matches[1][$i];
    }

    // Job's done! 
    // $matches[1] array contains all URLs, and 
    // $matches[2] array contains all anchors
} else {
    // WTF? Captcha or network problems? 
    // ...
}
?>

答案 1 :(得分:1)

我知道这是一个老话题,但是我创建并最近更新了该库:

https://github.com/gabrielfs7/google-trends

它支持按地区,随时间变化的兴趣,相关主题和查询进行搜索,并且不需要使用Google帐户即可。

示例:

$searchFilter = (new GSoares\GoogleTrends\Search\SearchFilter())
    ->withCategory(0) //All categories
    ->withSearchTerm('hair')
    ->withLocation('US')
    ->withinInterval(
        new DateTimeImmutable('now -7 days'),
        new DateTimeImmutable('now')
    )
    ->withLanguage('en-US')
    ->considerWebSearch()
    # ->considerImageSearch() // Consider only image search
    # ->considerNewsSearch() // Consider only news search
    # ->considerYoutubeSearch() // Consider only youtube search
    # ->considerGoogleShoppingSearch() // Consider only Google Shopping search
    ->withTopMetrics()
    ->withRisingMetrics();

$result = (new GSoares\GoogleTrends\Search\RelatedQueriesSearch())
->search($searchFilter)
->jsonSerialize();

响应示例:

{  
   "searchUrl":"http://www.google.com/trends/...",
   "totalResults":2,
   "results":[  
      {  
         "term":"hair salon",
         "ranking":100,
         "hasData": true,
         "searchUrl":"http://trends.google.com/..."
      },
      {  
         "term":"short hair",
         "ranking":85,
         "hasData": true,
         "searchUrl":"http://trends.google.com/..."
      }
   ]
}

可以将响应作为JSON或PHP对象获得。该代码100%受测试覆盖,并支持PHP7.2 +。

希望它可以帮助仍在搜索此内容的人。

答案 2 :(得分:0)

接受的答案不再有效。经过大量搜索,我终于找到了一个有效的PHP api to get google trends

有了这个,你可以在一段时间内从谷歌趋势中寻找图形,区域和相关查询,这样:

$gs=new GSession($guser, $gpass);
$gs->authenticate();
$gt=new GTrends($gs, 'es');
$gt->addTerm('something1')->addTerm('something2')->setTime('2017-04-01 2017-04-19');
$gt->getGraph('csv'));

修改:图书馆不再免费,费用为28欧元。