2016-05-13 11 views
0

Ich brauche viele Bilder. Eine gute Quelle dafür ist natürlich Google Bildersuche.Google images search Xpath - Auszug aus Text()

Ich habe herumspielen mit dem Finden der beste Weg, dies zu tun. Das Erhalten der kleineren "thumbnail" Bilder ist möglich, aber ich möchte die ursprünglichen Größen haben.

Verwendung:

//*[@id="rg_s"]/div/div/text() 

Ich habe eine URL auf die Originalgröße finden. Ex:

{"cb":9,"cl":9,"cr":9,"ct":9,"id":"twpCKa-qACVbrM:","isu":"twitter.com", 
"itg":false,"ity":"jpg","oh":512,"ou": 
"https://pbs.twimg.com/profile_images/698459967624474624/FsezpZpl.jpg", 
"ow":512,"pt":"Manchester United (@ManUtd) | Twitter","rid":"5Q1F7uGUbUotPM", 
"ru":"https://twitter.com/manutd","s":"","sc":1,"th":225,"tu": 
"https://encrypted-tbn2.gstatic.com/images? 
q\u003dtbn:ANd9GcRELkTX0VqGU4OHs9sgS93dedTCNsW0TvJT3S72YuOCCHfXxZSa","tw":225} 

mit: https://pbs.twimg.com/profile_images/698459967624474624/FsezpZpl.jpg

Da die URL auf die Originalgröße. Ich weiß nicht wirklich, wo dieser Textblock tatsächlich auf der Website gefunden werden kann. Aber was ich mich wundere ist, wenn die URL selbst isoliert und extrahiert werden kann?

+0

Nicht in XPath. Sie müssten den inneren JSON mit etwas anderem analysieren. –

Antwort

1

Sie können Teile eines JSON-Werts nicht mit XPath extrahieren, aber Sie könnten regex für den Textwert verwenden, den Sie mit XPath gefunden haben. Bsp:

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 

      //Load XML .... 
      //string s = xml.SelectSingleNode('//*[@id="rg_s"]/div/div/text()').Value 
      string s = @"{""cb"":9,""cl"":9,""cr"":9,""ct"":9,""id"":""twpCKa-qACVbrM:"",""isu"":""twitter.com"", 
""itg"":false,""ity"":""jpg"",""oh"":512,""ou"": 
""https://pbs.twimg.com/profile_images/698459967624474624/FsezpZpl.jpg"", 
""ow"":512,""pt"":""Manchester United (@ManUtd) | Twitter"",""rid"":""5Q1F7uGUbUotPM"", 
""ru"":""https://twitter.com/manutd"",""s"":"""",""sc"":1,""th"":225,""tu"": 
""https://encrypted-tbn2.gstatic.com/images? 
q\u003dtbn:ANd9GcRELkTX0VqGU4OHs9sgS93dedTCNsW0TvJT3S72YuOCCHfXxZSa"",""tw"":225}"; 

      Console.WriteLine(System.Text.RegularExpressions.Regex.Match(s, "\"ou\":\\s*?\"([^\"]+)\"").Groups[1].Value); 
      Console.ReadKey(); 

     } 
    } 
} 
+0

Entschuldigung, ich habe nicht früher geantwortet, vielen Dank für die Hilfe. Ich habe noch nicht viel Regex benutzt, und wenn das etwas weiter erklärt werden kann, würde es sehr hilfreich sein. Ich denke "\" ou \ ": \\ s *? \" ([^ \ "] +) \" "). Groups [1] .Value bedeutet, dass es" ou "findet und den Link auf irgendeine Weise ergreift. – Jomasdf

+0

Wann es findet 'ou:" somevalue "', es passt und speichert 'somevalue' in einer Erfassungsgruppe' (..) ', dann greifen Sie auf diese Gruppe zu und erhalten den Wert. Siehe Regex101 für Demo und Erklärung: https: // regex101 .com/r/cQ3uZ8/1 –

+0

Richtig, danke für die Erklärung! – Jomasdf