【问题标题】:Save embedded pdf from website从网站保存嵌入的 pdf
【发布时间】:2014-12-01 13:18:01
【问题描述】:

我正在编写一个小型 C# 应用程序来管理我们来自供应商的(化学品的)安全数据表。

目前我手动搜索化学品并保存 pdf 并在我的程序中添加指向 pdf 的链接。问题是我还有很多化学品要处理,所以最好自动化这个过程。

例如:一种化学品的部件号如下:271004

包含pdf的链接在这里:

Link

我一直在阅读页面源代码,但找不到指向 pdf 的链接

但是目前我对html/javascript的了解有限.....

有没有办法从网站上提取pdf?

提前感谢您的任何建议:)

【问题讨论】:

标签: javascript c# html c#-4.0 webclient


【解决方案1】:

对于使用 Firefox 和 Chrome 的用户,请将鼠标指针放在 PDF 区域内的任意位置,然后按 control + s(在 Windows 上)或 + s(在 mac 上)。这样做会下载文件。

【讨论】:

    【解决方案2】:

    现在我可以使用产品代码直接访问 pdf 文件:

    www.sigmaaldrich.com/MSDS/MSDS/DisplayMSDSPage.do?country=NL&language=EN-generic‌​&productNumber=271004&brand=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文件的问题。

    【讨论】:

      【解决方案3】:

      在页面中查找 ID 为“msdsPageFrame”的 iframe 元素。该元素的 src 属性包含 PDF 的 URL。下载那个网址。

      如果您对如何下载 URL 或如何解析页面以搜索 id 有疑问,请提出另一个问题。

      【讨论】:

      • 您好,感谢您的回复。唯一的问题是链接中的编号与零件编号无关,因此很难自动化。我希望能够根据产品编号获取pdf。
      • @JR_ 可以自动化,数字在原网址里,所以下载原网址,解析一下。查找 ID“msdsPageFrame”。读取 src 属性,下载该链接并完成!
      • “数字是原始网址”是什么意思? pdf 的网址是 sigmaaldrich.com/MSDS/MSDS/…。这个数字(1410280031038377)与零件号或“原始网址”有什么关系
      • 在网址中。 www.sigmaaldrich.com/MSDS/MSDS/DisplayMSDSPage.do?country=NL&language=EN-generic&productNumber=271004&brand=SIAL&PageToGoToURL=null 检查productNumber部分
      • 谢谢 :) 但是,由于 pdf 是首先生成的,因此无法下载...(需要几秒钟)。但是下载完成事件会立即触发。
      猜你喜欢
      • 2021-09-17
      • 2010-12-24
      • 2012-01-28
      • 2011-05-04
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 1970-01-01
      相关资源
      最近更新 更多