2016-09-10 1 views
0

J'essaie actuellement d'utiliser Powershell pour extraire des pages de liens d'un site spécifique. Ont jeté une variation du code actuel, mais il est essentiel de la même chose. J'essaye d'obtenir l'URL pour le résultat de recherche de recherche de google. J'ai ajouté la capture d'écran ci-dessous pour expliquer ce que je souhaite saisir.Premier résultat de recherche google

enter image description here

Je jusqu'à présent ont le code suivant qui est le texte à convertir une recherche réussie et fonctionne comme expected.however lorsqu'elle est appelée avec Invoke-WebRequest je n'obtenir des résultats significatifs. lorsque vous utilisez un navigateur avec le lien cela fonctionne sucsessfully

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 

Quelqu'un peut-il bien voulu aider en ce qui concerne ce problème?

+0

Vous ne dites pas vraiment ce que le problème est? _however quand appelé avec le Invoke-WebRequest _..... – Matt

+2

La page de Google est dynamiquement peuplée ainsi la réponse ne contient rien d'utile, vous devrez employer InternetExplorer.Application, il y a beaucoup d'exemples de faire cela. Ou basculez vers un moteur de recherche différent avec une API. – wOxxOm

+0

vous pourriez vouloir jeter un oeil à Microsoft Cognitive Services https://www.microsoft.com/cognitive-services/en-us/apis –

Répondre

0

Pour résumer les commentaires en guise de réponse, la page de recherche principale de Google ne contient pas le résultat de la recherche dans le code HTML. Il n'a que quelques conteneurs et le chargera pendant le chargement de la page et peuplera le DOM HTML dynamiquement.

Lorsque vous téléchargez la page, vous obtenez uniquement le conteneur HTML sans les résultats. Vous pouvez réellement voir la même chose si vous sélectionnez "Afficher la source" sur la page des résultats de recherche Google.

Vous pouvez essayer d'autres moteurs de recherche ou utiliser des services Web pour récupérer les données.

Vous pouvez en savoir plus sur le service Web de Google ici: https://developers.google.com/custom-search/json-api/v1/reference/cse/list