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

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

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

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

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

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

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

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

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

0 投票
0 回答
835 浏览

php - Goutte 中超过 30 秒的最大执行时间

嗨,我正在尝试抓取一个网站,特别是 www.cvedetails.com 和所有 CVE,在大约 600 个 CVE 之后,我收到了这个错误:

我已将max_execution_time值更改php.ini为 900 秒,但显然它不能正常工作。

我也在 X 请求后使用睡眠但没有成功,尝试更改用户代理和相同。

我不知道我不能做些什么来阻止爬行。

先感谢您

0 投票
2 回答
111 浏览

php - 如何通过设置与本地主机不同的位置来抓取网页?

我试图抓取 Bing 新闻。当我直接访问健康新闻时,我会获得专门针对美国游客的健康新闻。当我使用 Goutte 在 localhost 中访问它时,它会给出特定于印度(这是我的位置)的结果。有什么方法可以在抓取时获取美国的特定新闻吗?

我已经设置了用户代理以确保它不是问题:

我想不出任何其他可能导致此问题的差异。

0 投票
2 回答
5724 浏览

php - 如何在 Goutte 中设置 cookie?

我不知道如何在 Goutte 中设置 cookie。我正在尝试以下代码:

我附上了这个名字的 cookie 图像。如何设置此 cookie?

在此处输入图像描述

0 投票
1 回答
4420 浏览

php - 使用 gotte 从文件/字符串中读取

我正在使用 Goutte 制作网页抓取工具。

为了开发,我保存了一个我想遍历的 .html 文档(所以我不会经常向网站发出请求)。这是我到目前为止所拥有的:

根据我所知道的应该调用 Symfony\Component\BrowserKit 中的请求,并传入原始正文数据。这是我收到的错误消息:

如果我只使用 DomCrawler,那么使用字符串创建爬虫并非易事。(参见:http ://symfony.com/doc/current/components/dom_crawler.html )。我只是不确定如何用 Goutte 做同样的事情。

提前致谢。

0 投票
1 回答
2624 浏览

php - 使用 Goutte 抓取时 PHP 返回数组

我正在尝试使用 goutte 返回一组项目,我可以将它们打印出来,但我希望它们在一个数组中,就像一个 API。这是示例代码。我正在使用 Laravel 5.1。

我得到的只是一个空数组。

0 投票
1 回答
1436 浏览

behat - Behat 错误:MinkExtension 1.3 仅支持 MinkGoutteDriver 的 Goutte 1.x,不支持 Goutte 2.x

我一直在兜圈子,所以我将从我开始的地方开始:

我正在执行以下操作:

composer.json

behat.yml

这给了我这个错误:

[运行时异常]

MinkExtension 1.3 仅支持 MinkGoutteDriver 的 Goutte 1.x,不支持 Goutte 2.x。

我需要使用 behat 2.5.* 但除此之外,我不在乎。我怎样才能让它工作?

谢谢

0 投票
2 回答
1376 浏览

php - 通过为要遵循的每个链接启动 pthread 来使用 PHP 和 Goutte 抓取网页

我一直在尝试使用 PHP 和 Goutte 实现刮板。如果我只使用一个线程并按顺序刮掉所有东西,一切都会很好。为了加快这个过程,我希望:

  1. 加载初始页面,其中包含几个指向需要抓取的页面的链接以及用于分页的链接。
  2. 为需要抓取的每个链接启动不同的 pthread,以便抓取可以并行进行。
  3. 一旦从主线程启动了该页面的所有 pthread,主线程将导航到下一页并为该页面中的所有链接重复启动 pthread。

当然,我正在计划一种机制,以确保一次运行的线程数量不超过一定数量。

无论如何,我的问题目前与提供 Goutte 客户端和每个线程的链接有关。

显然,Goutte 客户端是不可序列化的,并且不能在线程构造函数中按原样传递,然后克隆,以便每个线程都有自己的 Goutte 客户端实例。

尝试使用原始客户端的克隆分配线程时出现以下错误:

致命错误:第 15 行 D:\users\Oriol\workspace\TravellScrapper\pagescrapers\baseScraper.php 中的未捕获异常 'Exception' 和消息 'Serialization of 'Closure is not allowed'

这是 Thread 类的代码,它试图在其构造函数中克隆 Goutte 客户端。

关于如何实现这一点的任何建议?我需要在每个线程中复制 Goutte 客户端,以便它包含所有会话信息并且我可以单击链接。

0 投票
1 回答
954 浏览

symfony - Goutte/Guzzle 设置配置选项

我正在抓取一个返回重定向的网页,所以我想在我crawler的那个中添加一个配置选项,让我设置allow_redirectsfalse. 查看有关重定向的 guzzle.readthedocs.org 网页,它说

由于我将 Goutte 与 Symfony2 一起使用,因此这些命令有些不同。例如:

谁能帮我发现如何将 guzzle 添加allow_redirects到配置中?我觉得这将帮助我获得我想要的页面内容,而不是crawler充满重定向代码。

谢谢!

0 投票
1 回答
1294 浏览

php - 试图调用类“DOMElement”的名为“filter”的未定义方法

给出错误$col1

我可以使用它来让它工作,但你不能使用break它,因为它不是真实的for loop