【问题标题】:How to get the HREF value of an element using CasperJS and XPath如何使用 CasperJS 和 XPath 获取元素的 HREF 值
【发布时间】:2014-06-20 16:04:39
【问题描述】:

我正在尝试找到以 PDF 下载链接为目标并将其下载到我计算机上正确目录的最佳方法。我正在尝试使用 CasperJS 和 XPath,因为这似乎是最简单的方法。

目前我有什么:

var x = require('casper').selectXPath;
var fs = require('fs');
casper.start('http://www.regulations.gov/#!documentDetail;D=APHIS-2012-0047-0291');

var classVal = x("//a[@class='gwt-Anchor']/@href");
casper.download(classVal, 'C:/users/bnickerson/desktop/script/result/p.pdf');

每当运行时,它都会下载一个文件,但它是一个名为 p.pdf 的 html 文件。如果我打开它,我会得到这个:

HTTP Status 404 - /%5Bobject%20Object%5D
type Status report
message /%5Bobject%20Object%5D
description The requested resource (/%5Bobject%20Object%5D) is not available.
JBoss Web/7.0.17.Final

我试图从以下页面下载此 PDF 的页面: http://www.regulations.gov/#!documentDetail;D=APHIS-2012-0047-0291

【问题讨论】:

    标签: xpath web-scraping casperjs


    【解决方案1】:

    您应该仔细查看 download 接受的参数。不要混合选择器和纯字符串。 classVal 是一个 XPath 选择器,不是选择器后面的文本内容。您可以使用 getElementAttribute 检索元素属性。

    casper.then(function(){
        var classVal = x("//a[@class='gwt-Anchor' and contains(@href,'contentType=pdf')]");
        var url = casper.getElementAttribute(classVal, "href");
        casper.download(url, 'C:/users/bnickerson/desktop/script/result/p.pdf');
    });
    

    【讨论】:

    • 我使用了你的代码,但它仍然给我错误。可能与实际的 href 本身不是直接链接到 pdf 的某种流有关吗? regulations.gov/…
    • @Prokzy 您的选择器不够具体。
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    • 2021-11-08
    • 2022-01-05
    相关资源
    最近更新 更多