问题标签 [domcrawler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1528 浏览

symfony - 表单测试:如何将集合提交到现有表单?

我使用两种方法来测试我的表单:

通过使用$form = …->form();

然后设置$form数组的值(更准确地说,这是一个\Symfony\Component\DomCrawler\Form对象):

文档中的完整示例:

通过直接发送POST数据:

前面的代码不适用于管理集合的表单(依赖于 Javascript 创建的字段),因为如果该字段不存在,它会引发错误。这就是为什么我也使用这种其他方式

文档中的完整示例:

这个解决方案是我知道的唯一方法来测试管理带有由 Javascript 添加的字段的集合的表单(请参阅上面的文档链接)。但是第二种解决方案更难使用,因为:

  • 它不检查存在哪些字段,当我必须提交包含现有字段的表单时,这是不切实际and
  • 它需要_token手动添加表单

我的问题

是否可以使用第一种方法的语法来定义现有字段,然后使用第二种语法添加新的动态创建的字段?

换句话说,我想要这样的东西:

但我得到这个错误:

无法访问的字段“名称”

$form->get('name')->setData('Fabien');触发相同的错误。

这个例子并不完美,因为表单没有集合,但足以向您展示我的问题。

当我向现有表单添加一些字段时,我正在寻找一种避免这种验证的方法。

0 投票
2 回答
1358 浏览

symfony - 通过 Symfony Crawler 获取第一级 dom 元素

我正在使用 Symfony Crawler 组件来解析 html,如下所示:

值 1 2 3 4 可能会有所不同,甚至不存在于空 div 中,但 div 也可能包含 subDivs 等。我陷入了选择第一级 div 来处理它们的阶段。Xpath 请求返回我一级 div 和细分

返回

Xpath 请求应该如何防止处理子元素?

UPD:
实际麻烦的DOM方案

此 DOM 树应由一级 div 处理,并根据<a>标签的存在进行一些逻辑。

0 投票
3 回答
780 浏览

html - 使用 Symfony DOM Crawler 从 HTML 标签中提取文本值的最有效/最好的方法是什么?

给定以下 HTML 代码片段:

我正在寻找使用 Symfony 的 Crawler 提取字符串“大”的最佳方法。

在这里我可以使用$crawler->html()然后应用正则表达式搜索。有更好的解决方案吗?或者你会怎么做?

0 投票
1 回答
502 浏览

php - 无法选择链接

我正在尝试抓取每个 .row 的 href。最终,我也想点击链接并访问它链接的 DOM,但我无法获得 Link 对象或 href 属性。

不确定 a 属性中没有任何文本这一事实是否是一个问题,但这就是我必须使用的 DOM。

帮助?

0 投票
1 回答
948 浏览

symfony - Symfony DomCrawler 获取 html 文件中的所有 div 元素

我想获取 html 文件中的所有元素。

这样做我总是取第一个 div 元素:如何取所有 div 元素并添加到数组中?谢谢

0 投票
2 回答
2990 浏览

symfony - symfony 2 domCrawler 如何获取所有子元素

也许这是一个愚蠢的问题,但我需要从选定的 html 页面中获取一个包含所有 HTML 节点的对象。我必须使所有节点都可选择,尤其是开始标签。如果有人知道TYPO3 TemplaVoila的模板引擎;我认为这最适合它,但我想自己重建它,但我不知道如何将所有打开的标签变成一个对象。

如果有人可以推送一些详细信息,实际上,我正在像这样使用 domCrawler 进行测试,但这有点令人困惑......

因此,经过一番研究,我取消了 HTMLPageDom 并像这样使用它:

所以这或多或少有效,但我认为我错过了一些东西。如何将数据附加到 $node->attr('href)?和:

0 投票
0 回答
498 浏览

php - DOMCrawler:如何选择“a”标签和“area”标签中的所有链接

我想获取页面上所有链接的列表。其中一些链接位于area标签中。

所以我这样做是为了获得所有链接的完整列表:

有没有办法直接在方法中选择标签和标签中的filter所有链接,所以我没有使用该功能?aareaarray_merge

0 投票
1 回答
5317 浏览

php - 调用未定义的方法 Symfony\Component\DomCrawler\Crawler::rewind()

我正在使用Yii2 DynamicForms 扩展 来创建没有问题的动态字段,但是今天当我运行 composer update 我收到以下错误:

Call to undefined method Symfony\Component\DomCrawler\Crawler::rewind()

错误指向第 201 行/vendor/wbraganca/yii2-dynamicform/DynamicFormWidget.php

此方法已从 DomCrawler 中删除?
如何解决这个问题?

0 投票
5 回答
899 浏览

jquery - css不选择子元素

可以说我有如下的html:

如何在This is a test 没有 的情况下过滤文本small

编辑:我将它与 symfony Dom Crawler 一起使用。

所以我有filter(a. h3 search-result-title);但我不想要元素的内容small

0 投票
0 回答
760 浏览

symfony - DomCrawler 选择表单中的所有输入标签

我有一个网页,我正在从(或至少尝试)抓取表单字段。我正在使用Symfony2(and Goutte) 来执行此操作,所以我有一个$crawler对象。这是下面的 html 示例:

如您所见,有很多嵌套内容。我的兴趣只是<input>标签内的<form></form>标签。

我正在尝试类似的事情:

但它似乎并没有得到所有(并且只有)输入标签。我做了一个->count(),当有更多的 50-100 个输入标签时,我只得到 8 作为数字。

谁能帮我得到正确的查询来做到这一点?


此外,一旦我有兴趣删除特定的输入。Dom 中是否有一种方法Crawler可以让我这样做?我环顾了很多地方,找不到太多。也许如果我做一个反向过滤系统?

谢谢你的帮助!