gpt4 book ai didi

c# - 下载网站的所有图像

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:51 26 4
gpt4 key购买 nike

所以我昨晚才开始学习C#。我开始的第一个项目是一个简单的图像下载器,它使用 HtmlElementCollection 下载网站的所有图像。

这是我到目前为止得到的:

    private void dl_Click(object sender, EventArgs e)
{
System.Net.WebClient wClient = new System.Net.WebClient();

HtmlElementCollection hecImages = Browser.Document.GetElementsByTagName("img");

for (int i = 0; i < hecImages.Count - 1; i++)
{

char[] ftype = new char[4];
string gtype;

try
{
//filetype
hecImages[i].GetAttribute("src").CopyTo(hecImages[i].GetAttribute("src").Length -4,ftype,0,4) ;
gtype = new string(ftype);

//copy image to local path
wClient.DownloadFile(hecImages[i].GetAttribute("src"), absPath + i.ToString() + gtype);
}
catch (System.Net.WebException)
{
expand_Exception_Log();
System.Threading.Thread.Sleep(50);
}

基本上它是提前渲染页面并寻找图像。这工作得很好,但由于某种原因它只下载缩略图,而不是完整的(高分辨率)图像。

其他来源:

WebClient.DownloadFile 上的文档:http://msdn.microsoft.com/en-us/library/ez801hhe(v=vs.110).aspx

The DownloadFile method downloads to a local file data from the URI specified by in the address parameter.

最佳答案

看看How can I use HTML Agility Pack to retrieve all the images from a website?

这使用了一个名为 HTML Agility Pack 的库下载全部<img src="" \>网站上的行。 How can I use HTML Agility Pack to retrieve all the images from a website?

如果该主题不知何故消失了,我会把它提供给那些需要它但无法触及该主题的人。

// Creating a list array
public List<string> ImageList;
public void GetAllImages()
{
// Declaring 'x' as a new WebClient() method
WebClient x = new WebClient();

// Setting the URL, then downloading the data from the URL.
string source = x.DownloadString(@"http://www.google.com");

// Declaring 'document' as new HtmlAgilityPack() method
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();

// Loading document's source via HtmlAgilityPack
document.LoadHtml(source);

// For every tag in the HTML containing the node img.
foreach(var link in document.DocumentNode.Descendants("img")
.Select(i => i.Attributes["src"]))
{
// Storing all links found in an array.
// You can declare this however you want.
ImageList.Add(link.Attribute["src"].Value.ToString());
}
}

正如您所说,由于您是新手,因此您可以使用 NuGet 轻松添加 HTML Agility Pack。要添加它,您 right-click在您的项目上,单击 Manage NuGet Packages , 在左侧的“在线”选项卡中搜索 HTML Agility Pack然后点击安装。您需要使用 using HtmlAgilityPack; 来调用它

毕竟,您应该可以很好地创建和使用已经创建的方法来下载 image_list 中包含的所有项目。上面创建的数组。

祝你好运!

编辑:添加了解释每个部分功能的注释。

EDIT2:更新了代码段以反射(reflect)用户评论。

关于c# - 下载网站的所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26188948/

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