如何在node-js环境中使用phantomjs进行动态网页抓取
How to use phantomjs in node-js environment for dynamic-page web scraping?
我正在进行web抓取,只需要完成一些任务。
我已经使用nodejs请求模块进行页面抓取。
它运行良好,非常适合cookie会话和所有内容。
但是,当需要渲染使用某些javascript框架构建的动态页面时,它会失败,如ANGULAR或BACKBONE等。
我正在努力让phantomjs克服这一点,因为我在谷歌上发现,克服这种情况是有帮助的。
我还为phantomjsphantom找到了一个nodejs桥
有了phantomjs和这个桥接模块,我就可以实现同样的事情了。
var phantom = require('phantom');
var fs = require('fs');
var sitepage = null;
var phInstance = null;
phantom.create()
.then(instance => {
phInstance = instance;
console.log("Instance created");
return instance.createPage();
})
.then(page => {
sitepage = page;
console.log("createing page");
return page.open('https://paytm.com/shop/p/carrier-estrella-plus-1-5-ton-3-star-window-ac-LARCARRIER-ESTRPLAN5550519593A34?src=grid&tracker=%7C%7C%7C%7C%2Fg%2Felectronics%2Flarge-appliances%2F1-5-ton-3-star-ac-starting-at-rs-22699%7C88040%7C1');
})
.then(status => {
//console.log(status);
console.log("getting content of page");
return sitepage.property('content');
})
.then(content => {
console.log("success");
//console.log(content);
fs.writeFile("ok.text", content);
sitepage.close();
phInstance.exit();
})
.catch(error => {
console.log("errr");
//console.log(error);
phInstance.exit();
});
上面是我尝试加载的一个动态网站页面的代码,它是用angular框架构建的。
在上面的代码中,如果我遗漏了正确的东西,有人能指导我吗
在动态代码运行之前,您将获得页面的内容,需要等待加载完成。
page.open后面的块需要等待页面完成,如果你知道有一个元素正在从后端提取,你可以躺在那里等待该元素(例如,请参阅phantomjs-doc中的wait)。
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 动态分配GA增强型电子商务跟踪器
- onkeyup无法动态创建多个文本区域
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何使Javascript动态html表及其上的事件
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 如何使用javascript从主svg对象动态创建svg视图框
- 使用PhantomJS下载动态web内容时遇到问题
- 使用nodejs和phantomjs进行动态抓取
- PhantomJs:我可以从具有动态设置内容的页面访问相对资产吗
- 使用PhantomJS的动态组合下拉框抓取 ASP.NET 站点
- 如何使用PhantomJS从页面获取动态HTML和Javascript值
- 使用 node.js 和 PhantomJS 提取动态内容
- 在PhantomJS中动态更改链接,然后单击它来抓取页面
- 使用PhantomJS和pjscrape来抓取动态生成的web内容
- 如何用Phantomjs向下滚动来加载动态内容
- 如何在node-js环境中使用phantomjs进行动态网页抓取
- 如何使用 phantomjs 通过动态数据可视化拍摄屏幕截图