在网页上选择一个超链接,并使用CasperJS将生成的网页内容存储在文本文件中
Select a hyperlink on webpage and store the content of resulting webpage in text file using 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();
x > y
意味着y
匹配的元素是x
匹配的元素的子元素。A > a:first-child
中的A
不是基于标记的有效选择器。我怀疑您想使用id的A
,它应该是#A > a:first-child
,但a
不是#A
的子级。
您需要使用子体操作(这是一个空格):#A a:first-child
或完全限定选择器:#A > div.B > div > div > a:first-child
。请注意,:first-child
并不关心元素是哪种类型,所以如果a
不是它的父元素的第一个元素,那么它将不匹配任何内容。您可以使用a:first-of-type
。
此外,此代码将产生TypeError,因为then
不是数字(90000
)上的函数。以这种方式设置属性时,无法链接某些内容。在启动then
函数或回调之前,您必须设置waitTimeout
。
尝试:
var fs = require('fs');
var casper = require('casper').create();
casper.start('http://www.example.com/');
var selector = "#A > div > div > div > a:first-of-type";
casper.waitUntilVisible(selector)
.thenClick(selector)
.wait(10000)
.then(function(){
fs.write('myfile.txt', this.getHTML(), 'w');
});
casper.run();
相关文章:
- 如何在没有文本区域或文本字段的浏览器中编辑网页内容
- 通过javascript在同一个打开的选项卡中重新加载新的网页内容
- 如何使用Perl访问JavaScript驱动的网页内容
- 重新调整网页内容的大小
- 无需ajax即可实时更改网页内容
- 将网页内容调整在固定大小的 iframe 上
- 需要了解跟踪代码在网页内容中的工作方式
- 在 Java 中读取动态网页内容
- 用于重复获取网页内容的程序
- 如何格式化从javascript加载的网页内容
- 用AJAX响应中的内容替换网页内容
- 在网页上选择一个超链接,并使用CasperJS将生成的网页内容存储在文本文件中
- 整合网页内容页面上的灯箱
- 使用什么技术可以在不刷新网页的情况下更新网页内容?
- 从下拉菜单中过滤网页内容的最简单方法是什么?
- 使用Bootstrap 3正确定位在动画背景之上获取网页内容
- 网页内容转换成JSON
- 从给定网页内容的字典中查找单词的最佳实践
- Facebook喜欢和分享按钮javascript更新我的网页内容,如重新加载页面
- 如何根据输入字段动态更改网页内容