Ce sera plus compliqué avec lié dans la recherche. Leur recherche a été fermée pour les utilisateurs non autorisés.
Tout d'abord, vous devez vous connecter avec votre navigateur, puis prendre vos cookies de session li_at
et _lipt
.
LinkedIn ne rend pas la liste des résultats directement au format html. Il rend de grands objets JSON dans l'élément <code>
, puis utilise JS pour le rendre.
Votre application de la console devrait être comme ceci:
static void Main(string[] args)
{
var html = @"https://www.linkedin.com/search/results/index/?keywords=firstname%3Ajohn%20AND%20lastname%3Adoe%20AND%20company%3Amicrosoft%20AND%20title%3Aceo&origin=GLOBAL_SEARCH_HEADER";
HtmlWeb web = new HtmlWeb();
web.PreRequest = new HtmlWeb.PreRequestHandler(OnPreRequest2);
var htmlDoc = web.Load(html);
var codeElement = htmlDoc.DocumentNode.SelectNodes("//code[starts-with(@id,'bpr-guid')][last()]");
var json = WebUtility.HtmlDecode(codeElement.Last().InnerText);
var obj = JsonConvert.DeserializeObject<Rootobject>(json);
var profiles = obj.included.Where(i => i.firstName != null);
foreach(var profile in profiles)
{
Console.WriteLine("Profile Name: " + profile.firstName + ";" + profile.lastName + ";" + profile.occupation + ";https://www.linkedin.com/in/" + profile.publicIdentifier);
}
Console.ReadKey();
}
public static bool OnPreRequest2(HttpWebRequest request)
{
var cookies = "li_at={YOURCOOKIEHERE};" +
"_lipt={YOURCOOKIEHERE}";
request.Headers.Add(@"cookie:" + cookies);
return true;
}
public class Rootobject
{
public Included[] included { get; set; }
}
public class Included
{
public string firstName { get; set; }
public string lastName { get; set; }
public string occupation { get; set; }
public string objectUrn { get; set; }
public string publicIdentifier { get; set; }
}
A la fin, il imprimera
Profile Name: John;Doe;ceo at Microsoft;https://www.linkedin.com/in/john-doe-8102b868
Profile Name: John;Doe;Ceo at Microsoft;https://www.linkedin.com/in/john-doe-63803769
Profile Name: John;Doe;CEO at Microsoft;https://www.linkedin.com/in/john-doe-2151b69b
J'ai installé pack agilité html, mais je reçois des erreurs de compilation - JsonConvert, HttpWebRequest, WebUtility n'existe pas , Aucune surcharge pour OnPreRequest2 correspond à ..PreRequestHandler - quels autres espaces de noms dois-je inclure? –
nvm, j'ai dû installer NewtonSoft.Json version 9, puisque 10 ne fonctionne pas avec VS2012 .. btw, j'ai une autre exigence simple - lire la variable de recherche html à partir d'un fichier/table et de vider la sortie à un fichier/table. Seriez-vous intéressé à coder ceci pour une carte-cadeau amazon de 25 $? –