2017-08-01 212 views
1

这是我在空闲时间尝试做的事情。但是我还不确定我可能面临的复杂性和问题。我想去像这样的网址:https://fred.stlouisfed.org/series/DFII5保存此图表作为图像,本地任何地方在我的电脑上。将html表格/图表元素转换为图片

我的第一个方法是为使用的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或其他任何东西。

编辑一些进一步的研究把这些2至我的注意:http://www.princexml.com/https://wkhtmltopdf.org/

他们都是HTML到PDF库从我的理解。是否有可能使用这些,只获得图表的HTML并将其转换为PDF?

+0

使用硒去网页并截图。你可以参考https://stackoverflow.com/questions/35921168/how-can-i-get-screenshot-of-specified-element-using-webdriver-in-c-sharp –

回答

1

你可以尝试HTML2PDF转换器。请参阅https://www.html2pdf.fr

或者HTML2PS转换器。见http://user.it.uu.se/%7Ejan/html2ps.html

ImageMagick可以使用后者,如果安装了转换。请参阅HTML部分http://www.imagemagick.org/script/formats.php

+0

你能提供一些示例代码吗? – Iason

+0

我从来没有在ImageMagick中做过。但大概是,如果你安装了html2ps,你应该可以做到:转换https:// fred.stlouisfed.org/series/DFII5' result.ps。但是ImageMagick有一个policy.xml文件,您可能需要修改所有从https :.中读取的文件。或者,在浏览器中下载链接“https:// fred.stlouisfed.org/series/DFII5”,然后使用html2ps或html2pdf。但是,我再也没有这样做过。 – fmw42

1

只是第一个想法。是的,该图不是图像。

所以,一个想法可能是:让你的软件做一个截图,并用一些图像编辑SDK剪出特定区域。

对于加载网站和做屏幕截图,我会想到像硒这样的东西。之后为了编辑图像,您可以使用ImageMagick之类的东西。

另一个想法可能是从网站获取该图像的元数据并自行绘制。