这是我在空闲时间尝试做的事情。但是,我还不确定我可能面临的复杂性和问题。我想转到这样的网址:https://fred.stlouisfed.org/series/DFII5并将此图表另存为图片,在我的电脑上本地。
我的第一种方法是使用html敏捷包:
var document = new HtmlWeb().Load("https://fred.stlouisfed.org/series/DFII5");
var urls = document.DocumentNode.Descendants("img")
.Select(e => e.GetAttributeValue("src", null))
.Where(s => !String.IsNullOrEmpty(s));
甚至使用WinForms Web浏览器控件:
private void GetWebpage(string url)
{
WebBrowser browser = new WebBrowser();
browser.Navigate(url);
browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
}
void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var browser = (WebBrowser)sender;
var client = new WebClient();
foreach (var img in browser.Document.Images)
{
var image = img as HtmlElement;
var src = image.GetAttribute("src").TrimEnd('/');
if (!Uri.IsWellFormedUriString(src, UriKind.Absolute))
{
src = string.Concat(browser.Document.Url.AbsoluteUri, "/", src);
}
//Append any path to filename as needed
var filename = new string(src.Skip(src.LastIndexOf('/') + 1).ToArray());
File.WriteAllBytes(filename, client.DownloadData(src));
}
}
这两种方法都能够从该网页上获取所有图像,但图表是我想要的,而且它不是图像。
这项任务可行吗?我需要图书馆/小工具吗?我将如何实现这一目标?注意:在C#中没有必要这样做,它可以是Python或其他任何东西。
编辑一些进一步的研究引起了我的注意:http://www.princexml.com/和https://wkhtmltopdf.org/
根据我的理解,它们都是html到pdf库。是否可以使用这些,只获取图表的html并将其转换为pdf?
答案 0 :(得分:2)
只是第一个想法。是的,该图表不是图像。
所以,一个想法可能是:让你的软件做一个截图,并用一些图像编辑SDK剪掉那个特定的区域。
为了加载网站并进行截图,我会想到像Selenium这样的东西。要在之后编辑图像,您可以使用ImageMagick之类的东西。
另一个想法可能是从网站上获取该图像的元数据并自行绘制。
答案 1 :(得分:1)
你可以试试HTML2PDF转换器。见https://www.html2pdf.fr
或HTML2PS转换器。见http://user.it.uu.se/%7Ejan/html2ps.html
ImageMagick可以使用后者,如果安装进行转换。请参阅http://www.imagemagick.org/script/formats.php
上的HTML部分