我正在編寫一個小型C#應用程序來管理我們的供應商提供的化學品安全數據表。從網站保存嵌入式pdf
目前我手動搜索化學品並保存pdf並在我的程序中添加pdf鏈接。問題是我仍然有許多化學品需要去,所以最好是自動化這個過程。
例如:化學具有以下部件號:271004
包含PDF鏈接是在這裏:
我一直在閱讀頁面的源代碼,但無法找到一個鏈接PDF格式
但我的HTML/JavaScript的知識是有限的,以目前.....
是有什麼辦法從網站上提取PDF文件?
預先感謝任何建議:)
我正在編寫一個小型C#應用程序來管理我們的供應商提供的化學品安全數據表。從網站保存嵌入式pdf
目前我手動搜索化學品並保存pdf並在我的程序中添加pdf鏈接。問題是我仍然有許多化學品需要去,所以最好是自動化這個過程。
例如:化學具有以下部件號:271004
包含PDF鏈接是在這裏:
我一直在閱讀頁面的源代碼,但無法找到一個鏈接PDF格式
但我的HTML/JavaScript的知識是有限的,以目前.....
是有什麼辦法從網站上提取PDF文件?
預先感謝任何建議:)
查找在ID爲「msdsPageFrame
」 iframe元素的頁面。該元素的src
屬性包含您的PDF的網址。下載該網址。
如果您有關於如何下載URL或如何解析頁面以搜索ID的問題,請提出另一個問題。
你好,謝謝你的回覆。唯一的問題是鏈接中的數字與零件號碼無關,所以很難自動化。我希望能夠根據產品編號獲得pdf。 – 2014-10-07 07:53:30
@JR_您可以自動化,該號碼位於原始網址中,因此請下載原始網址並對其進行解析。找到id「msdsPageFrame」。閱讀src屬性,下載該鏈接並完成! – SynerCoder 2014-10-07 07:58:42
你是什麼意思「數字是原始URL」?該pdf的網址爲http://www.sigmaaldrich.com/MSDS/MSDS/PrintMSDSAction.do?name=msdspdf_1410280031038377。這個數字(1410280031038377)與零件編號或「原始網址」 – 2014-10-07 08:12:47
現在我能夠使用的產品代碼訪問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文件沒有下載的問題。
簡答:是的,有一種方法。附錄:[你試過什麼](http://www.whathaveyoutried.com)? – SynerCoder 2014-10-07 07:28:16