如何用phantom.js抓取javascript注入的图像src和alt
How to scrape javascript injected image src and alt with phantom.js?
我使用以下脚本使用phantom.js抓取图像:
var page = require('webpage').create();
url = 'https://www.everlane.com/collections/mens-luxury-tees/products/mens-crew-antique'
page.open(url, function(status) {
if (status !== 'success') {
console.log('error');
phantom.exit();
return;
}
var a = page.evaluate(function() {
return document.getElementsByTagName('img');
});
SrcAlt = [];
for (var i=0; i<a.length; i++){
var src = a[i].getAttribute('src');
var alt = a[i].getAttribute('alt');
SrcAlt.push({"src": src, "alt": alt});
}
console.log(SrcAlt);
phantom.exit();
});
但是,脚本在我定义变量 a
后挂起,这意味着它不会遍历并返回 src 和 alt 属性。当我console.log(a)
它返回 34 时,所以我相信我有适当的图像资源。如何访问 src 和 alt 信息?谢谢!
您需要在页面加载完成后评估页面。您可以使用page.onLoadFinished
回调来执行此操作。在所有页面内容加载完毕且文档准备就绪后,将调用此回调。这样的事情应该有效:
var page = require('webpage').create();
var url = 'https://www.everlane.com/collections/mens-luxury-tees/products/mens-crew-antique';
page.open(url);
page.onLoadFinished = function()
{
var a = page.evaluate(function() {
return document.getElementsByTagName('img');
});
SrcAlt = [];
for (var i=0; i<a.length; i++){
var src = a[i].getAttribute('src');
var alt = a[i].getAttribute('alt');
SrcAlt.push({"src": src, "alt": alt});
}
console.log(SrcAlt);
phantom.exit();
}
相关文章:
- Javascript将图像src更改为淡入淡出
- 在字符串中查找所有图像 src URL 并存储在数组中
- 如何使用javascript和xpath获取图像src
- 使用带有变量的javascript更改图像src
- 用jquery抓取图像SRC-attr
- MVC5更改jquery脚本中的图像src
- 隐藏或删除图像 src=未定义
- JavaScript 动态更改图像 src 的位置 - NO JQuery
- 如何使用 jquery、声音/静音按钮更改图像 SRC onclick
- 有没有一种方法可以判断图像src是否在javascript内部返回null
- 更改图像src-dons't工作jquery/js
- 将图像加载到localStorage,并将图像src设置到该位置
- 需要多次使用getElementById来更改图像src
- 如何更改多个图像的图像src
- 加载后修改页面上所有没有id的图像(src)
- 带有图像 src 的 JavaScript 点击事件
- 如果屏幕宽度 <= 699,则交换图像 src
- 更换部分图像 src
- 从没有jQuery的字符串中获取图像src
- 保存图像 src 的功能不起作用