问题标签 [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 投票
3 回答
1718 浏览

php - Web Scrape Symfony2 - 不可能的挑战 - 爬虫解析

(编辑:我仍然没有找到解决这个问题的方法。这个$crawler对象看起来很荒谬,我只想将它解析为特定的<td>文本,这有多难?我也不能serialize()整个爬虫对象并制作整个将网页的源代码转换为字符串,否则我只能用困难的方式解析该字符串。请帮忙。我觉得我已经很好地描述了这个问题,如下所示。)

下面我使用 Symfony、Goutte 和 DomCrawler 来抓取网页。我一直试图通过其他问题来解决这个问题,但没有成功,但现在我将发布我所有的代码,以使其尽可能直截了当。

我能够获取该页面并获取我正在寻找的第一个数据。第一个是从 javascript 打印的 url,a带有一个标签,onclick并且是一个长字符串,所以我使用 apreg_match来筛选并得到我需要的东西。

我需要的下一点数据是<td>标签中的一些文本。问题是,这个网页有 10-20 个不同的<table>标签,而且没有id=""class=""标签,所以很难隔离。所以我要做的是搜索“事件标题”这个词,然后转到下一个兄弟<td>标签并提取它的 innerHtml,这将是实际的标题。

问题是,对于第二部分,我似乎无法正确解析$crawler对象。我不明白,我preg_match之前在对象的一个serialize()​​版本上做过$crawler,但对于下半部分,我似乎无法正确解析。

preg_match只是返回一个空数组。我认为这是搜索$crawler对象的问题,因为它由许多节点组成。我一直在尝试将其全部转换为 html 然后转换为 apreg_match但它只是拒绝工作。我做了一些print_r陈述,它只返回整个网页。

以下是爬虫对象中的一些 html 示例:

目标是解析整个页面/$crawler对象并获得标题“大自然的严酷面孔”

我知道这一定是可能的,但任何人都想提供的唯一答案是指向 domcrawler 页面的链接,此时我已经阅读了大约一千次。请帮忙。

0 投票
1 回答
278 浏览

php - 无法刮取的属性来自兄弟元素

我正在尝试使用 Symfony2、Goutte 和 DomCrawler 抓取一些数据。我有一个棘手的情况,我需要在<td>.

工作部分:

好吧,现在是:

我正在尝试更改选择器

知道如何继续遍历,以便我可以访问<input>它以获得它的属性 value="" 是什么?

0 投票
1 回答
1468 浏览

php - Symfony 2 使用 Symfony\Component\DomCrawler\Crawler 测试 xml

我有一个返回 xml 的 url,但我在提取“链接”元素时遇到了一些问题。

我需要用它来测试它

这些是我的测试:

“链接”是保留字?

0 投票
1 回答
5299 浏览

php - 如何使用 Goutte Crawler 提取数据?

这段代码返回了内容的href,现在我想从这个href中提取内容并将其发送到我的视图。命名我需要提取的 div:



0 投票
2 回答
2474 浏览

symfony - Guzzle 响应不能与 Domcrawler() 一起使用

我正在尝试从网站上抓取一些内容。我最终发现它需要 cookie,所以我用 guzzle cookie 插件解决了这个问题。这很奇怪,因为我无法通过 var_dump 获取内容,但如果我执行“echo”,它会显示页面,这让我觉得有一些动态数据调用,它获取数据。我已经习惯了使用 guzzle 的 api,但不确定我应该处理这个吗?谢谢

如果我使用 domcrawler 我会得到一个错误。

代码 -

错误

0 投票
1 回答
93 浏览

php - 正确的 XPath 语法

我正在尝试访问前一个兄弟姐妹的属性,但事实证明这很困难。

所以基本上我试图抓取的网页是可怕的,并且锚标签使用糟糕的 onclick 而不是 href。愚蠢,我知道。我试图首先找到包含 onclick 的锚标记window.open('servletLinkJunkHere...'),然后移动到上一个兄弟,这是一个img标记,并从中提取src属性。

这是我正在尝试使用的 xpath:

关于我如何做到这一点的任何想法?我知道这是可能的,我只是不完全精通 xpath 查询。另外,有没有什么好的资源可以学习 xpath 的所有细节?谢谢!

编辑:所以这就是我所拥有的,但它似乎只返回一个空数组。

0 投票
2 回答
1831 浏览

symfony - 如何从元素中获取文本,不包括其中的一些其他元素

domCrawler在 symfony 框架中使用。我使用它从 html 中爬取了内容。现在我需要获取带有 ID 的元素内的文本。我可以使用下面的代码来验证文本:

element( #idOfTheElement) 包含一些跨度、按钮等(也有一些类)。我不想要那些里面的内容。如何从元素中获取文本,不包括其中的一些其他元素。

注意:我要获取的文本没有任何其他包装,除了元素#idOfTheElement

Html 如下所示:

0 投票
6 回答
9218 浏览

symfony - Symfony 2 Dom Crawler:如何在 Element 中仅获取 text()

使用 Dom Crawler 仅获取文本(无标签)。

输出:获取描述凑凑

我想输出(仅):获取描述

更新:

我找到了一个解决方案:(但它真的很糟糕)

0 投票
0 回答
161 浏览

php - 更改 Symfony2 DomCrawler 或 Goutte 的文件大小限制

我正在使用Goutte v2.0.4,它是Symfony2 DomCrawler的包装器。我有本地存储的html文件。其中一些低于 10MB;我已经成功爬取了这些文件。

其他文件大于30MB。这些没有被抓取。这可能是文件大小问题。所有文件都有类似的格式。那么有什么问题呢?如何抓取大文件?

0 投票
1 回答
2721 浏览

php - 如何使用 Goutte 和 Symfony DomCrawler 从父 div 中过滤子节点值,其中 style = "..."?

我正在尝试使用 php 包Goutte从给定的 wikiquote 页面中抓取引号,该包包含 Symfony 组件:BrowserKit、CssSelector 和DomCrawler

但是,我的结果集中有一些我不想要的引号,即来自错误分配部分的引号。

这是我到目前为止所拥有的:

我现在关注的问题是如何从错误分配的部分中过滤掉引号。此部分包含在div具有以下style属性的父级中:

我在想,如果我能以某种方式li从这个特定部分获取节点值,我就可以从上面过滤掉它们$quoteArray。我遇到的问题是我无法弄清楚如何li从此部分中选择子节点值。

我尝试选择具有以下变化的孩子:

但这并没有返回我需要的节点值。有谁知道该怎么做或我做错了什么?