gpt4 book ai didi

c# - 快速从网页抓取图像

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:44 24 4
gpt4 key购买 nike

我想知道是否有人可以在这里给我一些指导。我希望能够以编程方式尽快获取网页上的每个图像。这就是我目前正在做的:(注意 clear 是一个 WebBrowser 控件)

if (clear.ReadyState == WebBrowserReadyState.Complete)
{
doc = (IHTMLDocument2)clear.Document.DomDocument;
sobj = doc.selection;
body = doc.body as HTMLBody;
sobj.clear();
range = body.createControlRange() as IHTMLControlRange;
for (int j = 0; j < clear.Document.Images.Count; j++)
{
img = (IHTMLControlElement)clear.Document.Images[j].DomElement;
HtmlElement ele = clear.Document.Images[j];
string test = ele.OuterHtml;
string test2 = ele.InnerHtml;

range.add(img);
range.select();
range.execCommand("Copy", false, null);
Image image = Clipboard.GetImage();
if (image != null)
{
temp = new Bitmap(image);
Clipboard.Clear();
......Rest of code ...........
}
}
}

但是,我发现这对于很多图像来说可能很慢,而且它会劫持我的剪贴板。请问有没有更好的办法?

最佳答案

我建议使用 HttpWebRequestHttpWebResponse。在您的评论中,您询问了效率/速度。

正在传输的数据的角度来看,使用HttpWebRequest 在最坏的情况下与使用浏览器控件一样,但几乎可以肯定要好得多。当您(或浏览器)向 Web 服务器发出请求时,您最初只会获得页面本身的标记。此标记可能包括图像引用、对象(如 flash)和被引用但实际上并未包含在页面本身中的资源(如脚本和 css 文件)。然后,网络浏览器将继续请求呈现页面所需的所有相关资源,但使用 HttpWebRequest,您可以只请求那些您真正想要的东西(图像)。

从从页面中提取实体所需资源或处理能力的角度来看,没有可比性:使用浏览器控件比扫描 HttpWebResponse 占用更多资源>。使用 C# 代码扫描一些数据非常快。渲染网页涉及javascript、图形渲染、css解析、布局、缓存等。实际上,这是一个相当密集的操作。在程序控制下使用浏览器,这很快就会变得明显:我怀疑你每秒处理的页面可能不止一个页面。

另一方面,直接与 Web 服务器打交道的 C# 程序(不涉及渲染引擎)每秒可能处理数十个甚至数百个页面。出于所有实际目的,您实际上只会受到服务器响应时间和您的互联网连接的限制。

关于c# - 快速从网页抓取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4650954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com