Tag: angularjs

使用R中的phantomJS来抓取动态加载内容的页面

背景我正在使用rvest从R中的一些网站上抓取产品信息。 这适用于除了一个网站之外的所有内容,其中的内容似乎是通过angularJS(?)动态加载的,因此不能通过URL参数迭代加载(就像我为其他网站所做的那样)。 具体url如下: http://www.hornbach.de/shop/Badarmaturen/Waschtischarmaturen/S3584/artikelliste.html 请记住,我的计算机上没有管理员权限,只能实现不需要或只需要一次性授予管理员权限的解决方案 期望的输出最后R中的表格包含产品信息(例如标签,价格,评级)=>在这个问题中,我纯粹需要帮助来动态加载和存储网站; 我可以自己处理R中的后处理。 如果你能把我推向正确的方向,那绝对是伟大的; 也许下面列出的方法之一是在正确的轨道上,但我似乎无法将这些方法转移到指定的网站。 目前的方法我发现phantomJS作为无头浏览器,afaik应该能够处理这个问题。 我对Java Script几乎一无所知,并且语法不同(至少对我来说)很大程度上来自于我更习惯的语言(R,Matlab,SQL)我真的很难实现其他可能在其他地方工作的方法我的代码。 基于这个例子 (非常感谢)我设法使用以下代码从第一个显示的页面中检索至少信息: R: require(rvest) ## change Phantom.js scrape file url <- 'http://www.hornbach.de/shop/Badarmaturen/Waschtischarmaturen/S3584/artikelliste.html' lines <- lines <- readLines("scrape_final.js") lines[1] <- paste0("var url ='", url ,"';") writeLines(lines, "scrape_final.js") ## Download website system("phantomjs scrape_final.js") ### use Rvest to scrape the downloaded website. web <- read_html("1.html") content […]

如何在点击角度方式添加和删除活动类

我这样做 …. //控制器 $scope.select= function(item) { $scope.selected = item; }; $scope.isActive = function(item) { return $scope.selected === item; }; 单击瓷砖,它正在添加活动类,然后单击其他瓷砖从第一个瓷砖中删除并添加到另一个瓷砖。它正在按预期工作。但我想要实现的是再次点击相同的瓷砖我必须删除活动类,单击再次,我必须添加像切换。但不知道如何实现这一点。请帮助

keypress和keydown优先于Firefox和Safari中的粘贴事件

我有一个使用jqlite的Angular指令,我想绑定一个keypress,keydown和paste事件来更新指令的选项。 我使用以下命令绑定到paste,keypress和keydown事件: input.bind(“paste.elementClass”, updateOptions); input.bind(“keypress.elementClass”, updateOptions); // keypress does not fire if the backspace/delete button is pressed. This keydown listener triggers the // keypress event if backspace/delete is pressed. Didn’t use keydown listener instead of keypress because // keydown did not register if multiple buttons are pressed (shift + d). The keyup event choked // […]

如何在angularJs中单击按钮添加div

我是angularJs的新手。 我试图说我有一个div,我有一些行格式的选择框和文本框。 有一个按钮说“ADD”。 当我点击ADD时,我需要在前一个div下面添加相同的div元素。 这是我的div部分…. IF Table 1 Table 2 Table 3 Table 4 Table 5 Field 1 Field 2 Field 3 Field 4 Field 5 = != < > <= => Table 1 Table 2 Table 3 Table 4 Table 5 Field 1 Field 2 Field 3 Field 4 Field 5 Add 帮我解决这个问题……

使用AngularJS中的Jasmine测试元素数量

我正在使用Jasmine for AngularJS编写端到端测试。 我正在使用Protractor来运行测试。 我有以下标记 我想测试一下,对于特定的页面实例,我有四个这样的图像。 这是我到目前为止所拥有的 describe(‘Phone detail view’, function() { beforeEach(function() { browser.get(‘app/index.html#/phones/nexus-s’); }); it(‘should display four thumbnails on the nexus-s page’, function() { expect(element(by.css(‘.phone-thumbs li img’)).length()).toBe(4); }); }); 问题是我得到一个错误说 TypeError: Object # has no method ‘length’ 我哪里错了?

使用javascript获取Windows用户名

我试图仅使用以下代码在IE浏览器中获取Windows用户名。 function GetUserName() { var wshell = new ActiveXObject(“WScript.Shell”); alert(wshell.ExpandEnvironmentStrings(“%USERNAME%”)); } 如何在其他浏览器中获取Windows用户名,如chrome,mozilla,safari。

与AngularJS中的jQuery .one()相同的是什么?

你怎么能创建一个只触发一次的事件发射器,然后自我毁灭。 等同于jQuery的.one()函数?

AngularJS:如何在css类更改时通过切换更改颜色属性?

我对AngularJS很新,并且已经在这个论坛上找到了很多有用的答案,但是以下项目让我疯狂。 首先,让我告诉你我想做什么:我确实有一个元素,我想在运行时更改color属性,但只有当该特定元素具有类’active’时才会这样。 因此,我创建了一个如下所示的指令: OfficeUIRibbon.directive(‘officeActiveStyle’, function () { return { restrict: ‘A’, link: function (scope, element, attr) { scope.$watch(function() { return element.attr(‘class’); }, function(newValue, oldValue) { if (newValue !== oldValue) { // Values will be equal on initialization alert(‘Changed’); } }); } }; }); 据我所知,这确实会观察属性类,如果检查它们,确保在首次启动应用程序时不会触发手表。 现在,使用ng-click指令设置元素的class属性。 当我现在执行HTML时,没有任何反应。 当我单击“设置活动”链接时,类已更改,但该指令不会向我显示警报。 (这是为什么?)。 如果我再次更改类,那么该指令会向我显示警报。 那么,为什么在第一次点击时,不会触发指令的警报? 我已经创造了一个更好理解的掠夺者 。 希望有人可以告诉我这有什么问题,因为它确实阻碍了我的工作。

angularjs如何使用ng-repeat创建div堆栈

简而言之,我有一个用ng-repeat创建的div列表。 {{value.keys}} 哪个显示如下: Plunker 但这有可能使它们像这样堆叠吗? : 我想我必须为每个div动态设置位置和z-index。 但我不确定这是否可能,如果是,那么如何? 如果有任何解决方案,这将是很好的。 如果需要jQuery / js它也会没问题。

jquery-steps进入angularjs指令

我正在研究我的第一个angularjs指令。 我希望将jquery-steps( https://github.com/rstaib/jquery-steps )包装成一个指令。 当我尝试将步骤内容中的输入或表达式绑定到它们未绑定的控制器模型时,我的问题出现了。 我所拥有的示例代码如下。 angular.module(‘foobar’,[]) .controller ‘UserCtrl’, ($scope) -> $scope.user = name:’John Doe’ .directive ‘wizardForm’, () -> return { restrict: ‘A’, link: (scope, ele) -> ele.steps({}) } html看起来如下 Step 1 Name: {{user.name}} Step 2 Advanced Info etc 名称为{{user.name}}的内容输出为步骤1中的内容 我仍然是角度的初学者,所以我似乎无法理解为什么内容区域没有附加范围或模型。 任何使我走上正确轨道的提示或线索都会非常有帮助! 编辑:我添加了一个plnkr来显示我尝试过的内容。 http://plnkr.co/edit/y60yZI0oBjW99bBgS7Xd