Diskuze: stažení obrázku
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
https://developers.google.com/custom-search/json-api/v1/overview
Ahoj, špatně jsi mě pochopil, když mám udělanou desktop aplikaci ve WPF a uživatel zadá nějaké slovo do textboxu, potřebuji aby to ta aplikace zadala do Googlu a ukázala mu první výsledek hledání.
Tak přes WebClient pošleš request na
https://www.google.cz/search?q=[jmenoobrazku]&tbm=isch
Nainstaluješ si přes Nuget balíček CsQuerry https://github.com/…etre/CsQuery
a naparsuješ, vyjde ti něco jako tohle:
using(WebClient cl=new WebClient())
{
string DOM = cl.DownloadString("https://www.google.cz/search?q=[jmenoobrazku]&tbm=isch");
CQ cq = DOM;
string imgUrl = cq[".rg_i"][0].GetAttribute("src");
HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(imgUrl);
HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse();
Stream stream = httpWebReponse.GetResponseStream();
Image img = Image.FromStream(stream);
}
Metoda pro WPF
public void SetImage(string imageName, Image control)
{
using (Client cl = new Client())
{
CQ DOM = cl.DownloadString("https://www.google.cz/search?q="+imageName+"&tbm=isch");
CQ imgResults = DOM[".rg_i"];//.rg_i je CSS selektor pro výsledek hledání
string url = "";
for (int i = 0; i < imgResults.Length; i++)
{
if (imgResults[i].HasAttribute("data-src"))
//některé bloky .rg_i nemusí být výsledky hedání,
//proto budeme hledat, dokud nenajdeme takový, který má odkaz na obrázek.
{
url = imgResults[i].GetAttribute("data-src");
break;
}
}
if (string.IsNullOrEmpty(url))
throw new ArgumentException("takový obrázek nebyl nalezen");
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(url, UriKind.Absolute);
bitmap.EndInit();
control.Source = bitmap;//WPF kontrola <image>
}
}
a potřebná třída:
public class Client:WebClient
{
public Client():base(){}
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest req = WebRequest.Create(address) as HttpWebRequest;
req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36";
//musíme nastavit user-agent na normální prohlížeč, jinak nám Google vrátí jinou strukturu
return req;
}
}
Zobrazeno 5 zpráv z 5.