问题标签 [goutte]

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 投票
0 回答
140 浏览

mink - Mink - 无法检索 Microsoft 提供的页面

我有这个代码

当我尝试在具有部分响应标头的页面上使用此代码时

然后我得到这个错误

我已经为 PHP 服务和 Microsoft 服务(我怀疑是 ASP)网站重复了这段代码。只有 ASP 站点存在此问题。

有什么理由不能与 Microsoft 提供的页面一起使用吗?

0 投票
2 回答
966 浏览

php - Goutte 不会加载 ASP SSL 页面

我正在尝试基于 Symfony2 组件的 PHP 网络爬虫Goutte 。我已经成功地以纯文本和 SSL 形式检索了 Google。但是,我遇到了一个无法加载的 ASP/SSL 页面。

这是我的代码:

相反,对于这个站点,上述代码末尾的回声给了我这个:

错误请求(无效的标头名称)

我可以在 Firefox 中很好地看到该站点,并且可以使用wget --no-check-certificate没有其他选项(例如,设置标题或用户代理)很好地检索它的 HTML。

我怀疑我需要在 Goutte 中设置一些 HTTP 标头。有没有人知道我应该尝试哪些?

0 投票
1 回答
3613 浏览

symfony - BehatContext 和 MinkContext 之间的混淆

我正在尝试在我的 Symfony 2.3 项目中进行 BDD,并且似乎正在努力解决一些不一致问题。

根据我是使用 BehatContext 还是 MinkContext 作为 FeatureContext 类的基类,我得到了不同的结果。

如果我使用:

一切都很好。但是,如果我使用:

我收到错误,这使得 MinkContext 看起来不再喜欢我的正则表达式,系统自行生成。你能帮我理解吗:

FeatureContext.php

behat.yml

0 投票
2 回答
2322 浏览

php - 如何在 Behat 中选择驱动程序?

我安装了 Goutte 和 Sahi。我如何知道我默认使用的是什么驱动程序?

另外,我如何从一个驱动程序更改为另一个驱动程序?

谢谢你

我的 behat.yml 文件:

0 投票
1 回答
1090 浏览

php - Goutte:如何提交通过 Javascript 填充输入的表单

我有一个 asp.net 表单,我想自动提交以获取结果(顺便说一句,我所做的一切都是合法的)。

一些表单下拉输入字段是通过 ajax 动态填充的。一个字段是“地区”字段,一旦您选择了一个地区,“城市”下拉菜单就会被填充。如果我只是在通过 Goutte web-crawler 输入区域后尝试输入城市,则会引发无效值错误。

这甚至可以通过 Goutte 完成,还是我应该使用其他东西?

目标表单本身是用 asp.net 编写的,带有一个viewstateeventvalidation字段。

0 投票
4 回答
6050 浏览

php - 是否可以用 Goutte 解析 JSON?

我正在抓取网站,到目前为止用 Goutte 解析 HTML 没有问题。但是我需要从网站检索 JSON,并且由于 cookie 管理,我不想这样做file_get_contents()- 那不起作用。

我可以使用纯 cURL,但在这种情况下,我只想使用 Goutte,不想使用任何其他库。

那么有没有什么方法可以让我通过 Goutte 只解析文本,或者我真的必须用好的旧方法来做到这一点?

谢谢你。

0 投票
3 回答
11262 浏览

php - Goutte/Guzzle 可以强制进入 UTF-8 模式吗?

我正在使用Goutte从 UTF-8 站点上抓取,该站点内部使用 Guzzle。该站点声明了一个 UTF-8 元标记,因此:

但是,内容类型标头因此是:

并不是:

因此,当我抓取时,Goutte 没有发现它是 UTF-8,并且错误地抓取了数据。远程站点不在我的控制之下,所以我无法解决那里的问题!这是一组复制问题的脚本。一、刮板:

现在要放置在 Web 服务器上的测试页面:

这是 Goutte 测试的输出:

整页:UTF-8 测试 Content-Header 标头不完整时,井号中断:£15,216

正如您从最后一个脚本中的注释中看到的那样,在标题中正确声明字符集可以解决问题。我在 Goutte 中四处搜寻,看看是否有任何东西看起来会强制使用字符集,但无济于事。有任何想法吗?

0 投票
1 回答
670 浏览

html-entities - 带有behat的Goutte:xml字符串作为textarea值填充了html实体

我有一个页面,其中包含一个带有一些输入元素的表单,包括一个文本区域。这些输入字段填充了一些值。将整个页面视为某个实体的编辑页面。Textarea 包含一个 XML 字符串,可以在普通浏览器(例如 firefox 和 chrome)中正确显示,如下所示:

但是当我用 goutte mink 驱动程序运行测试用例时,页面被加载并且 textarea 的值用特殊字符编码,如下所示:

当我按下提交按钮时,混乱被发送到服务器并保存而不是初始正确的 xml。请注意,我根本不碰它。我可以加载页面并按下提交按钮,这一切都搞砸了。这只发生在 goutte 上,但不会发生在 selenium2 上。

所以问题是:我怎样才能强制 goutte 自动解释这些 html 实体并将它们作为正确的数据发送,而不是编码的混乱?

0 投票
1 回答
6740 浏览

php - Goutte - TLSv1 协议版本错误

我正在使用 Goutte 使用 SSL 证书在 Web 服务器上获取页面。每当我尝试获取此页面时,都会引发以下异常:

我一直在网上寻找这种类型的错误。握手失败时似乎会发生此错误。服务器似乎支持 TLSv1,客户端使用 SSL23。

我不确定这个评估是否正确,也不知道如何纠正。

这是我目前正在使用的代码:

更新:

注意:几周前我开始收到类似的错误,所以我想我会更新相关的问题和答案。

我遇到了类似的错误:

0 投票
1 回答
3137 浏览

php - 如何在 Guzzle 中捕获 cURL 使用的 IP?

我正在使用 Goutte(内部使用 Guzzle)进行网络抓取项目。我正在开发一个自定义速率限制器,因此我将所有 HTTP 操作存储到一个针对 IP 的数据库表中,以便我可以检查是否在最近的时间范围内对主机进行了调用。

目前我正在使用gethostbyname将已知主机名转换为 IP 地址,但 Guzzle 已经完成了查找,因此这可能是浪费。此外,主机名可能解析为多个 IP 地址(因此需要gethostbynamel),因此我自己派生的 IP 实际上可能不是 Guzzle 使用的 IP 地址(尽管猜测,可能在 PHP 级别有一些缓存这将使它可能gethostbyname返回正确的结果)。

我为 Guzzle 订阅了一个插件,它从 cURL 返回一些非常有趣的数据,以实现这一点。可悲的是,IP 地址不在其中。必须有一种方法来实现这一点 - 有什么想法吗?

这就是$response->getInfo()回报: