2017-08-01 38 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之類的東西。

另一個想法可能是從網站獲取該圖像的元數據並自行繪製。