从google图像搜索中获取HTML后,用C#获取搜索第一页上每个图像的URL的最佳方法是什么?

从google图像搜索中获取HTML后,用C#获取搜索第一页上每个图像的URL的最佳方法是什么?,c#,html,.net,C#,Html,.net,我正在开发一个应用程序,需要在谷歌图像搜索的第一页获取图像。我已经学会了如何在谷歌搜索查询中删除HTML,以及如何打开URL,获取照片的字节,并将其保存为图像对象,这样我就可以将其显示在Windows窗体上并保存到PC 但是,由于我不太擅长HTML解析、在HTML中查找对象以及一般的HTML,因此我希望使用一种方法,在该方法中,我将为页面的HTML提供信息,并且它将返回HTML中图像的URL字符串列表。我想完整的图片网址,但现在一切都可以 我已经尝试过了,但是如果我尝试这个解决方案的最佳答案,n

我正在开发一个应用程序,需要在谷歌图像搜索的第一页获取图像。我已经学会了如何在谷歌搜索查询中删除HTML,以及如何打开URL,获取照片的字节,并将其保存为图像对象,这样我就可以将其显示在Windows窗体上并保存到PC

但是,由于我不太擅长HTML解析、在HTML中查找对象以及一般的HTML,因此我希望使用一种方法,在该方法中,我将为页面的HTML提供信息,并且它将返回HTML中图像的URL字符串列表。我想完整的图片网址,但现在一切都可以

我已经尝试过了,但是如果我尝试这个解决方案的最佳答案,ndx是-1。据我所知,我猜这是因为谷歌编辑了他们的HTML,删除/重命名/更改了images_table类的实现

这是上面链接的答案的代码-:

private List<string> GetUrls(string html)

    {
        var urls = new List<string>();
        int ndx = html.IndexOf("class=\"images_table\"", StringComparison.Ordinal);
        ndx = html.IndexOf("<img", ndx, StringComparison.Ordinal);

    while (ndx >= 0)
    {
        ndx = html.IndexOf("src=\"", ndx, StringComparison.Ordinal);
        ndx = ndx + 5;
        int ndx2 = html.IndexOf("\"", ndx, StringComparison.Ordinal);
        string url = html.Substring(ndx, ndx2 - ndx);
        urls.Add(url);
        ndx = html.IndexOf("<img", ndx, StringComparison.Ordinal);
    }
    return urls;
}
私有列表getURL(字符串html)
{
var url=新列表();
int ndx=html.IndexOf(“class=\“images\u table\”,StringComparison.Ordinal);
ndx=html.IndexOf(“

如何重新实现此方法以使其按预期工作?我正在使用C#。如果我在问题或格式方面有任何错误,请告诉我我需要提供的任何信息,因为我是编程和StackOverflow新手。您还可以建议其他网站或API(免费)我可以使用从web获取图像。提前感谢。

使用WebBrowser控件导航到Google图像搜索页面,订阅
[WebBrowser].DocumentCompleted
事件,在该事件中验证
[WebBrowser].Readyste=WebBrowserReadyState.Complete
。之后,所有图像都在一个集合中:
[WebBrowser].Document.Images
src
是一个HtmleElement属性,因此
字符串src=[WebBrowser].Document.Images[0].GetAttribute(“src”);
。您会发现大多数缩略图都以Base64字符串的形式存储在HTML中。使用
Convert.FromBase64String()
获取字节数组。指向真实内容的链接位于上两层的锚中。但是您还有一个
[WebBrowser].Document.Links
可供您匹配的集合。勘误表勘误表:使用
WebBrowser控件
我的意思是
WebBrowser类
:您不需要控件,只需要WebBrowser类对象。您也可以使用,它提供类似的功能(对于像这样的简单任务可能太多).BTW,如果您决定使用WebBrowser对象,请阅读此处的注释:(还有一个实现,与您的实现类似).@Jimi在将Base 64字符串转换为字节数组时,我得到一个System.FormatException。异常显示-:System.FormatException Message=输入不是有效的Base-64字符串,因为它包含一个非Base 64字符、两个以上的填充字符或填充字符中的一个非法字符。您分析了该字符串吗?W当图像为base64格式时,它以例如data:Image/jpeg;base64开头(对于jpeg图像)。base64字符串以逗号开头。此外,您可以找到base64嵌入图像和标准Http/https链接。您需要处理这两种情况。如果需要示例,请告诉我。您没有指定正在使用的工具。