繁体   English   中英

如何解析来自谷歌的图像并将它们显示到图片框中?

[英]How do I parse images from google and display them into a pictureBox?

我正在尝试在 Windows 窗体中进行 Google 图片搜索,即使我手动搜索 xPath,我的代码也会返回 null,它会将我带到图片。 我对 API 和 NuGet 包还很陌生,所以对我来说轻松点,哈哈! 该错误特别是“对象引用未设置为对象的实例。 但是当我搜索 xPath 时,它会显示 48 个结果。 这是我的代码

private void searchButton_Click(object sender, EventArgs e)
    {
        string ImageQuery = titleTextBox.Text;
        var htmlDocument = new HtmlWeb().Load("https://www.google.com/search?q=+" + ImageQuery + "&tbm=isch");
        var imageNode = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='bRMDJf islir']/img");
        string imagePath = imageNode.Attributes["src"].Value;

        var imageStream = HttpWebRequest.Create(imagePath).GetResponse().GetResponseStream();
        this.optionOnePicture.Image = Image.FromStream(imageStream);
    }

您可以尝试以下代码从谷歌获取图像并将其显示在图片框中。

 private void button1_Click(object sender, EventArgs e)
        {
            string ImageQuery = textBox1.Text;
            var htmlDocument = new HtmlWeb().Load("https://www.google.com/search?q=+" + ImageQuery + "&tbm=isch");
            var list=GetImagesInHTMLString(htmlDocument.Text);
            var str = list[0];
            string pattern = @"(https://.*);";
            Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
            Match matches = rgx.Match(str);
            string path = matches.Groups[1].Value;
            var imageStream = HttpWebRequest.Create(path).GetResponse().GetResponseStream();
            this.pictureBox1.Image = Image.FromStream(imageStream);
        }

        private List<string> GetImagesInHTMLString(string htmlString)
        {
            List<string> images = new List<string>();
            string pattern = @"<(img)\b[^>]*>";
            Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
            MatchCollection matches = rgx.Matches(htmlString);

            for (int i = 0, l = matches.Count; i < l; i++)
            {
                images.Add(matches[i].Value);
            }
            return images;
        }

为了测试,我选择了搜索后的第一张图片。

结果:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM