我将尝试解释我的意思。我正在开发一个程序,我正在尝试从该站点自动下载一堆图像。
也就是说,我想从你点击英雄名字时得到的页面下载大方形图标,例如在Darius页面左上角的带有名字的图像DariusSquare.png
并将其保存到文件夹中。
这是可能的还是我对 C# 的要求太多了?
非常感谢你!
我将尝试解释我的意思。我正在开发一个程序,我正在尝试从该站点自动下载一堆图像。
也就是说,我想从你点击英雄名字时得到的页面下载大方形图标,例如在Darius页面左上角的带有名字的图像DariusSquare.png
并将其保存到文件夹中。
这是可能的还是我对 C# 的要求太多了?
非常感谢你!
是的,有可能,执行 C# Web 请求并使用 C# HTML Agility Pack 来查找图像 url。
您可以使用另一个 Web 请求来下载图像:
从 url 下载图像的示例:
public static Image LoadImage(string url)
{
var backgroundUrl = url;
var request = WebRequest.Create(backgroundUrl);
var response = request.GetResponse();
var stream = response.GetResponseStream();
return Image.FromStream(stream);
}
使用 html 敏捷包并获取其他数据的示例:
var request = (HttpWebRequest)WebRequest.Create(profileurl);
request.Method = "GET";
using (var response = request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
var doc = new HtmlDocument();
doc.Load(new StringReader(result));
var root = doc.DocumentNode;
HtmlNode profileHeader = root.SelectSingleNode("//*[@id='profile-header']");
HtmlNode profileRight = root.SelectSingleNode("//*[@id='profile-right']");
string rankHtml = profileHeader.SelectSingleNode("//*[@id='best-team-1']").OuterHtml.Trim();
#region GetPlayerAvatar
var avatarMatch = Regex.Match(profileHeader.SelectSingleNode("/html/body/div/div[2]/div/div/div/div/div/span").OuterHtml, @"(portraits[^(h3)]+).*no-repeat;", RegexOptions.IgnoreCase);
if (avatarMatch.Success)
{
battleNetPlayerFromDB.PlayerAvatarCss = avatarMatch.Value;
}
#endregion
}
}
一般来说,只要有足够的时间和金钱,一切皆有可能。在你的情况下,你需要很少的前者和后者:)
您需要做的事情可以在以下高级步骤中描述:
<a>
使用英雄获取表中的所有标签。WebClient
URL (即属性值)并下载 HTML<a>
href
src
属性并下载它。或者,也许每个图像都有一个您可以使用的通用 ID?我认为没有人会为您提供可以为您执行这些步骤的确切代码。相反,您需要自己进行一些研究。