2014-10-07 71 views
1

我正在編寫一個小型C#應用程序來管理我們的供應商提供的化學品安全數據表。從網站保存嵌入式pdf

目前我手動搜索化學品並保存pdf並在我的程序中添加pdf鏈接。問題是我仍然有許多化學品需要去,所以最好是自動化這個過程。

例如:化學具有以下部件號:271004

包含PDF鏈接是在這裏:

Link

我一直在閱讀頁面的源代碼,但無法找到一個鏈接PDF格式

但我的HTML/JavaScript的知識是有限的,以目前.....

是有什麼辦法從網站上提取PDF文件?

預先感謝任何建議:)

+2

簡答:是的,有一種方法。附錄:[你試過什麼](http://www.whathaveyoutried.com)? – SynerCoder 2014-10-07 07:28:16

回答

1

查找在ID爲「msdsPageFrame」 iframe元素的頁面。該元素的src屬性包含您的PDF的網址。下載該網址。

如果您有關於如何下載URL或如何解析頁面以搜索ID的問題,請提出另一個問題。

+0

你好,謝謝你的回覆。唯一的問題是鏈接中的數字與零件號碼無關,所以很難自動化。我希望能夠根據產品編號獲得pdf。 – 2014-10-07 07:53:30

+1

@JR_您可以自動化,該號碼位於原始網址中,因此請下載原始網址並對其進行解析。找到id「msdsPageFrame」。閱讀src屬性,下載該鏈接並完成! – SynerCoder 2014-10-07 07:58:42

+0

你是什麼意思「數字是原始URL」?該pdf的網址爲http://www.sigmaaldrich.com/MSDS/MSDS/PrintMSDSAction.do?name=msdspdf_1410280031038377。這個數字(1410280031038377)與零件編號或「原始網址」 – 2014-10-07 08:12:47

-1

現在我能夠使用的產品代碼訪問PDF文件直接:

www.sigmaaldrich.com/MSDS/MSDS/DisplayMSDSPage.do?country=NL &語言= EN-通用& productNumber = 271004 &品牌= SIAL & PageToGoToURL = NULL

使用下面的代碼我嘗試下載PDF:

 private void Download() 
    { 
     webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);     // Uses the Event Handler to check whether the download is complete 
     webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); // Uses the Event Handler to check for progress made 
     webClient.DownloadFileAsync(new Uri("http://www.sigmaaldrich.com/MSDS/MSDS/DisplayMSDSPage.do?country=NL&language=EN-generic&productNumber=271004&brand=SIAL&PageToGoToURL=null"), @"C:\Users\test\Downloads\newfile.pdf");   // Defines the URL and destination directory for the downloaded file 
    } 

    private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) 
    { 
     Debug.WriteLine("DownloadProgressChangedEventHandler"); 
    } 

    private void Completed(object sender, AsyncCompletedEventArgs e) 
    { 
     Debug.WriteLine("AsyncCompletedEventHandler"); 
    } 

然而,這是行不通的。問題在於首先生成pdf(需要幾秒鐘)。但是,AsyncCompletedEventHandler立即被觸發。我認爲這是爲什麼pdf文件沒有下載的問題。