2016-09-10 5 views
0

現在Powershellを使用して特定のサイトのリンクページをスクラップしようとしています。現在のコードの変形をノックしましたが、それは同じように本質的です。googleから最初の検索結果を取得

検索のGoogle検索結果のURLを取得しようとしています。私は何をつかむことを望んでいるのかを説明するために、以下のスクリーンショットを追加しました。

enter image description here

私はこれまでのところ成功した検索にテキストに変換されて、私は意味のある結果を得るいけない呼び出し、WebRequestクラスで呼び出されたときexpected.howeverとして働いている次のコードを持っています。リンクが付いているブラウザを使用している場合は、それは正常に動作します

function Get-GoogleSEQueryString 
{ 
    param([string[]] $Query) 

    Add-Type -AssemblyName System.Web # To get UrlEncode() 
    $QueryString = ($Query | %{ [Web.HttpUtility]::UrlEncode($_)}) -join '+' 

    # Return the query string 
    $QueryString 
} 

$SearchString = "Requiem for an American Dream" 
$QueryString = Get-GoogleSEQueryString $SearchString 
$url = "http://www.google.com.au/?gfe_rd=cr&ei=ZuzTV_v6B7Du8weC8qsY#q="+$QueryString+"+site:IMDB.com" 

#(Invoke-WebRequest -Uri $url).links | Where-Object {$_.href -like "http*"} 

$t = Invoke-WebRequest -uri $url 
$t.AllElements | Where {$_.innerhtml -like '*=*'} |Sort { $_.InnerHtml.Length } | Out-GridView 

誰でもこの問題に関して親切に助けてもらえますか?

+0

あなたはここにGoogleのウェブサービスについての詳細を学ぶことができますか? Invoke-WebRequest _..... – Matt

+2

Googleページで呼び出されたときに応答が何も役立たないように動的に入力された場合は、InternetExplorer.Applicationを使用する必要があります。あるいは、APIを使って別の検索エンジンに切り替えることもできます。 – wOxxOm

+0

マイクロコグニティブサービス https://www.microsoft.com/cognitive-services/en-us/apis –

答えて

0

コメントを回答として要約すると、Googleのメインの検索ページには、HTMLに検索結果が含まれていません。いくつかのコンテナしかなく、ページのロード中にコンテナをロードし、HTML DOMを動的に移入します。

ページをダウンロードすると、コンテナHTMLだけが結果なしで取得されます。 Googleの検索結果ページで[ソースを表示]を選択すると、実際に同じ結果が表示されます。

他の検索エンジンを試すか、Webサービスを使用してデータを取得できます。あなたが実際に問題が何であるかを言うことはありませんhttps://developers.google.com/custom-search/json-api/v1/reference/cse/list

関連する問題