westlife73 发表于 2023-11-3 16:31:47

利用HtmlAgilityPack库采集美图秀秀图片


上次有个美女跟我说美图秀秀官网的图片都好漂亮,既然美女都开口了,我能说什么呢?于是,我就用HtmlAgilityPack库写了一个C#爬虫程序,专门来采集美图秀秀的图片,看着网站挺复杂,不过这个爬虫写起来倒是一点也不难,这就给大家分享。

```csharp

using System;

using System.Net;

using HtmlAgilityPack;

class Program

{

static void Main(string[] args)

{

// 创建一个WebClient对象,设置代理服务器

WebRequest request = WebRequest.Create("https://xiuxiu.meitu.com/");

request.Proxy = new WebProxy("https://www.duoip.cn/get_proxy", 8000);

request.UseDefaultCredentials = true;

WebResponse response = request.GetResponse();

// 创建一个HtmlDocument对象,解析网页

HtmlDocument doc = new HtmlDocument();

doc.Load(response.GetResponseStream());

// 获取所有图片的链接

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//img[@src]");

foreach (HtmlNode node in nodes)

{

string imageUrl = node.Attributes["src"].Value;

// 使用代理服务器下载图片

byte[] imageBytes = DownloadImage(imageUrl);

// 将图片保存到本地

SaveImage(imageBytes, imageUrl);

}

}

// 使用代理服务器下载图片

static byte[] DownloadImage(string imageUrl)

{

WebRequest request = WebRequest.Create(imageUrl);

request.Proxy = new WebProxy("https://www.duoip.cn/get_proxy", 8000);

request.UseDefaultCredentials = true;

WebResponse response = request.GetResponse();

return response.GetResponseStream().ReadBytes();

}

// 将图片保存到本地

static void SaveImage(byte[] imageBytes, string imageUrl)

{

// 创建一个FileStream对象,用于写入文件

using (FileStream fs = new FileStream(imageUrl, FileMode.Create, FileAccess.Write))

{

// 将图片数据写入文件

fs.Write(imageBytes, 0, imageBytes.Length);

}

}

}

```

以上代码首先使用WebClient对象创建一个HTTP请求,并设置代理服务器。然后,使用HtmlAgilityPack库解析网页,并获取所有图片的链接。对于每个图片链接,下载并保存到本地。需要注意的是,这个程序只能下载网页上的图片,不能爬取网页上的其他内容。如果需要爬取整个网页的内容,需要修改代码以适应不同的需求。同时,程序的性能和稳定性,需要根据实际情况进行调整。
页: [1]
查看完整版本: 利用HtmlAgilityPack库采集美图秀秀图片