选择网页上的超链接,并使用CasperJS

时间:2015-12-03 06:27:40

标签: javascript automation web-scraping casperjs

我试图在页面完全加载后点击图片链接。图片链接嵌套在div标签中,如下所示

<section id="A">
    <div class="B">
        <div>
            <div>
                <a href="url" class="C">
                    <img src="http://www.example.com/xyz.jpg">
                </a>
            </div>
        </div>                      
    </div>                                   
</section>  

我正在尝试加载图片链接并将其内容写入文本文件,但它不能使用下面给出的代码

var fs = require('fs');
var casper = require('casper').create();
casper.start('http://www.example.com/');

var selector = "A > a:first-child";
casper.waitUntilVisible(selector)
    .thenClick(selector)
    .wait(10000)
    .waitTimeout = 90000 
    .then(function(){
        fs.write('myfile.txt', this.getHTML(), 'w');
    });

casper.run();

1 个答案:

答案 0 :(得分:1)

CSS选择器的

x > y表示由y匹配的元素是由x匹配的元素的子元素。 A中的A > a:first-child不是基于您的标记的有效选择器。我怀疑您要使用A的{​​{1}},但#A > a:first-child不是a的孩子。

您需要使用后代操作(这是一个空格):#A或完全限定选择器:#A a:first-child。请注意,#A > div.B > div > div > a:first-child并不关心元素的类型,因此如果:first-child不是它的父元素的第一个元素,那么这不会匹配任何内容。您可以使用a

此外,此代码将产生TypeError,因为a:first-of-type不是数字(then)上的函数。以这种方式设置属性时,您无法链接某些内容。您必须在90000函数或回调开始之前或之内设置waitTimeout

尝试:

then