问题标签 [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.
php - 如何从需要 cookie 登录的网站中抓取 PHP 中的网站内容?
我的问题是它不仅需要一个基本的cookie,而是要求一个会话cookie,以及随机生成的ID。我认为这意味着我需要使用带有 cookie jar 的网络浏览器模拟器?
我曾尝试使用 Snoopy、Goutte 和其他一些网络浏览器模拟器,但到目前为止我还没有找到有关如何接收 cookie 的教程。我有点绝望了!
谁能给我一个如何在 Snoopy 或 Goutte 中接受 cookie 的示例?
提前致谢!
basic-authentication - 基本身份验证在本地工作,但不在 Travis 上
为了使用我的 API,我需要经过身份验证才能执行一些操作。我正在使用 Behat + Mink 进行测试。
我有两种身份验证方法:通过令牌(发送带有一些参数的 POST 请求,然后获取我可以在其他地方使用的令牌),这在本地环境和 Travis 环境中运行良好,或者我可以使用基本身份验证。
在我的本地环境中,Basic Auth 工作得非常好,而且我不记得配置过什么特别的东西......但是当我在 Travis 上执行测试时,它似乎没有考虑到它。
正如我所说,我正在使用 Behat + Mink(+ Goutte,所以我也在使用 Guzzle),并且在将请求发送到 Curl 之后,似乎包含 Authorization ( Authorization: Basic (base64_txt)
) 的标头只是......消失了。即使我在本地环境中。但是,它仍然保留了我的登录信息。但不是在 Travis 环境中,它与我的本地环境应该没有什么不同......
我不知道是否有足够的信息,但如果您需要更多信息,请随时告诉我,我会尽可能提供。
谢谢。
php - Goutte,网站怎么能看到我是机器人?
不管我使用的是 Firefox 还是 GoogleBot,该网站仍将我视为机器人。
我正在尝试使用 Goutte 创建一个爬虫。该网站有一个针对爬虫的阻止系统,但我不知道如何避免它。这是我当前的代码:
如您所见,我已经更改了用户代理,并且我已经通过爬取记录用户代理的本地文件测试了它是否正确更改。
该网站仍然以某种方式将我识别为机器人。有任何想法吗?
php - Goutte 禁用 Guzzle 缓存
我遇到了 Goutte 的问题,或者实际上是 Goutte 的 Guzzle 部分。
Guzzle 确实会自动缓存每个 GET 调用,我试图禁用它,但我无法真正让它工作。
正如您在此处看到的,我将缓存参数直接解析到 Guzzle 构造函数中。
但是,这不会进行任何更改。从缓存插件的文档开始(参见:http ://guzzlephp.org/guide/http/caching.html )
这段代码:
应该输出cache.override_ttl的当前值,这不会输出任何东西。
我相信这一定是关于 Goutte 包装的东西,我忽略了。有人有想法么?
php - 使用 Symfony DomCrawler 获取元素的原始 HTML 代码
html结构:
我的PHP代码:
返回:
但是我需要:
web-crawler - 如何使用痛风
问题:
无法完全理解 Goutte 网络爬虫。
请求:
有人可以帮助我理解或提供代码来帮助我更好地理解如何使用 Goutte 网络爬虫吗?我已经阅读了 README.md。我正在寻找比提供的信息更多的信息,例如 Goutte 中可用的选项以及如何编写这些选项,或者当您查看表单时,您是否搜索表单的 name= 或 id=?
试图被抓取的网页布局:
第 1 步:
网页有一个表单,有一个单选按钮来选择要填写的表单类型(即名称或许可证)。它默认为带有名字和姓氏文本框的名称以及状态下拉菜单选择列表。如果您选择 Radio,则 jQuery 或 JavaScript 会使 First Name 和 Last Name 文本框消失,并出现 License 文本框。
第 2 步:
成功提交表单后,它会将您带到一个包含多个链接的页面。我们可以进入其中两个来获取我们需要的信息。
第 3 步:
成功单击链接后,我们希望第三页包含我们正在寻找的数据,并且我们希望将该数据存储到 php 变量中。
提交错误信息:
如果提交错误信息,则 jQuery/Javascript 将返回“未找到记录”消息。在与提交相同的页面上。
注意:
首选方法是选择许可证单选按钮,填写许可证号,选择州,然后提交表格。我已经阅读了大量关于 Goutte 的帖子和博客以及其他项目,但我无处可找到 Goutte 可用的选项、如何找到此信息或如何使用此信息(如果确实存在)。
php - Symfony 2 和 Goutte
我想从一个使用 CP1251 编码的站点获取一些信息。
默认爬虫在某些页面上返回空节点 h1,但它存在于页面上并且布局类似是有效的。经过 Groute、Crawler 和 iconv 的神奇代码。在一种情况下,我得到:
而是:
还有一次我从控制台收到很多哔声信号,它会转储接收到的页面。我怎么解决这个问题?何处寻万恶之源?
php - 你能让 Mink 跟随从 https 到 http 的重定向并保持会话吗?
我正在尝试使用 codeception 和 PhpBrowser(它使用 Mink 和 Goutte 驱动程序)测试我的 ajax 脚本。
我的 ajax 脚本需要经过身份验证的会话才能执行,并且会话是通过我的登录页面创建的。
我在获取 PhpBrowser/Link 会话时遇到问题,在登录后仍然存在。
我创建了一个 PhpBrowser Helper 函数来覆盖 _initialize,这样我就可以让 https 在我的测试服务器上使用自签名证书,如下所示:
现在,当我运行验收测试时,登录似乎正常工作,并且重定向基于 apache access_logs 发生,但 PHPSESSID cookie 不会持续存在,因此登录后我的所有访问请求都是未经授权的。
我尝试通过比较
重定向之前和之后。
currentUrl() 返回值永远不会到达重定向目标,尽管 apache access_logs 另有说明。
getResponseHeaders() 在表单提交后返回一个 PHP_SESSID cookie,但对于之后的所有请求,它并不存在。
任何想法/猜测为什么在登录期间创建的会话在重定向后没有持续存在?
我是否需要对 Mink 会话进行任何特殊配置以使它们遵循重定向,还是我做错了什么?
在此先感谢您的帮助!
-埃德
behat - 如何为使用 behat/mink 的 goutte 驱动程序禁用 behat.yml 中的 guzzle 缓存?
是否有一个配置参数可以使用 behat/mink 完全禁用 goutte 驱动程序中的 guzzle 缓存?以下 behat.yml 参数都没有对我的环境产生影响:
mink - Mink - Goutte Driver cURL SSL 错误
我正在使用Mink 1.4,使用 Goutte 驱动程序。
我试图在页面中设置一些表单字段值,然后单击提交该表单的按钮。
但后来我得到这个错误
我假设由于我设置CURLOPT_SSL_VERIFYPEER
为 false,它不应该检查 SSL。
这是我的代码:
}