Как получить изображение с первой страницы при поиске в Google?
, как правило, после использования Google для поиска для такого города, есть часть страницы Википедии справа с изображением и картой. Кто-нибудь может сказать мне, как я могу получить доступ к этому изображению? Я должен знать, как его скачать.
2 ответа:
На самом деле основное изображение (которое идет с изображением карты справа) очень редко из Википедии, поэтому вы не можете использовать Wikipedia API, чтобы получить его. Если вы хотите получить доступ к фактическому главному изображению, вы можете использовать это:
Эта работа для меня, и всегда возвращает фактический основной образ (если таковой существует). Например,private static void GetGoogleImage(string word) { // make an HTTP Get request var request = (HttpWebRequest)WebRequest.Create("https://www.google.com.pg/search?q=" + word); request.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36"; using (var webResponse = (HttpWebResponse)request.GetResponse()) { using (var reader = new StreamReader(webResponse.GetResponseStream())) { // get all images with base64 string var matches = Regex.Matches(reader.ReadToEnd(), @"'data:image/jpeg;base64,([^,']*)'"); if (matches.Count > 0) { // get the image with the max height var bytes = matches.Cast<Match>() .Select(x => Convert.FromBase64String(x.Groups[1].Value.Replace("\\75", "=").Replace("\\075", "="))) .OrderBy(x => Image.FromStream(new MemoryStream(x, false)).Height).Last(); // save the image as 'image.jpg' using (var imageFile = new FileStream("image.jpg", FileMode.Create)) { imageFile.Write(bytes, 0, bytes.Length); imageFile.Flush(); } } } } }
GetGoogleImage("New York")
Дайте мне данные: image / jpeg; base64,/9j/4AAQSkZJRg....Я использую тот факт, что из всех строковых изображений base64 в ответе main имеет максимальную высоту, поэтому его нужно только упорядочить их по высоте и выбрать последний. Если это необходимо, вы можете проверить здесь также минимальную высоту изображения. Замена
\075
на=
необходима подкладка base64.
Если вы хотите получить основное изображение статьи Википедии, вы должны использоватьWikipedia API .
Обновление:
Вы можете использовать Jsoup: Java HTML Parser
org.jsoup:jsoup:1.8.3
, который возвращает список изображений внутри страницы.String stringResponse = getHtmlContent(url); Document doc = Jsoup.parse(stringResponse); Element content = doc.getElementById("content"); //Get all elements with img tag , Elements img = content.getElementsByTag("img"); for (Element el : img) { //for each element get the src image url String src = el.attr("src"); Log.d(TAG, "src attribute is : " + src); String alt = el.attr("alt"); //do some stuff }
Обновление: Wikipida предоставляет API для возврата HTML-контента