Xочу сделать запрос в гугл по слову, получить первое изображение и скачать его получив byte[]
, как это сделать? На API у них ограничения.
Можете воспользоваться библиотекой, оболочкой над браузером, CefSharp
. Подробно написание вспомогательного кода для неё расписал в этом ответе.
Вам только надо будет изменить класс Program
для неё:
class Program
{
private static void Main()
{
MainAsync().Wait();
}
private static async Task MainAsync()
{
CefSharpWrapper wrapper = new CefSharpWrapper();
wrapper.InitializeBrowser();
Console.Write("Введите поисковой запрос: ");
string searchText = Console.ReadLine();
string base64 = await wrapper.GetResultAfterPageLoad("https://images.google.com", async () =>
{
await wrapper.EvaluateJavascript(
// заполняем тесковое поле
$@"document.getElementById('lst-ib').value = '{searchText}';
// выполняем submit поисковой формы
document.getElementById('tsf').submit()");
// Ждём когда перейдёт на результаты поиска
wrapper.WaitTillAddressChanges();
// Когда страница результатов полностью подгрузится, излекаем картинку
return await wrapper.GetResultAfterPageLoad(wrapper.Address, async () =>
await wrapper.EvaluateJavascript<string>(
// получаем результаты (атрибут src первой img)
"document.querySelector('.rg_di.rg_bx.rg_el.ivg-i img').src"));
});
// Так как картинки хранятся в Base64 удаляем заголовок
base64 = Regex.Replace(base64, @"^data:image/\w+;base64,(.*)", "$1", RegexOptions.IgnoreCase);
// Превращаем Base64 в массив байт
byte[] imageBytes = Convert.FromBase64String(base64);
wrapper.ShutdownBrowser();
}
}
Можно воспользоваться библиотекой selenium
- эта либа позволяет взаимодействовать с браузером.
Подаешь на вход ссылку, затем вбиваешь текст в поиск, переходишь на нужную ссылку, закачиваешь себе страницу, используя WebClient
, через какой-нибудь AngleSharp
парсишь эту страницу, получая ссылки, используя WebClient
закачиваешь.
Может кто-нибудь предложит другой путь...
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток! У меня в качестве ListViewItemTemplate является RichTextBox с забинденным Document'ом
Всем доброго времени сутокПомогите разобраться, написал приложение которое производит дозапись бинарного файла, но дозапись только в 101 значение,...