Récupérer tous les liens sur une recherche google

c# html-agility-pack selenium

Question

J'essaie de récupérer tous les liens d'une recherche google mais sans succès ...

J'utilise Selenium + HTML Agility Pack

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(pageSource);

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//*[@id='rso']/div/div/div[1]/div/div/h3/a"))
{
     string href = link.GetAttributeValue("data-href", string.Empty);

     list.Add(href);
}

foreach (var item in list)
{
     Console.WriteLine(item);
}

Google HTML

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(pageSource);

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//*[@id='rso']/div/div/div[1]/div/div/h3/a"))
{
     string href = link.GetAttributeValue("data-href", string.Empty);

     list.Add(href);
}

foreach (var item in list)
{
     Console.WriteLine(item);
}

Je voudrais extraire la date-href mais sans succès

Réponse populaire

Le problème n'est-il pas que de cette manière vous trouvez tous les liens.

Lorsque vous ajoutez a[@data-href] au XPath de SelectNodes vous ne sélectionnez que les liens contenant un attribut réel d'URL de données.

Donc ça deviendra:

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//*[@id='rso']/div/div/div[1]/div/div/h3/a[@data-href]")) 
{ 
    string href = link.GetAttributeValue("data-href", string.Empty); 
    list.Add(href); 
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi