问题标签 [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 - 如何使用 Goutte 和 Symfony DomCrawler 从父 div 中过滤子节点值,其中 style = "..."?
我正在尝试使用 php 包Goutte从给定的 wikiquote 页面中抓取引号,该包包含 Symfony 组件:BrowserKit、CssSelector 和DomCrawler。
但是,我的结果集中有一些我不想要的引号,即来自错误分配部分的引号。
这是我到目前为止所拥有的:
我现在关注的问题是如何从错误分配的部分中过滤掉引号。此部分包含在div
具有以下style
属性的父级中:
我在想,如果我能以某种方式li
从这个特定部分获取节点值,我就可以从上面过滤掉它们$quoteArray
。我遇到的问题是我无法弄清楚如何li
从此部分中选择子节点值。
我尝试选择具有以下变化的孩子:
但这并没有返回我需要的节点值。有谁知道该怎么做或我做错了什么?
php - Goutte 中超过 30 秒的最大执行时间
嗨,我正在尝试抓取一个网站,特别是 www.cvedetails.com 和所有 CVE,在大约 600 个 CVE 之后,我收到了这个错误:
我已将max_execution_time
值更改php.ini
为 900 秒,但显然它不能正常工作。
我也在 X 请求后使用睡眠但没有成功,尝试更改用户代理和相同。
我不知道我不能做些什么来阻止爬行。
先感谢您
php - 如何通过设置与本地主机不同的位置来抓取网页?
我试图抓取 Bing 新闻。当我直接访问健康新闻时,我会获得专门针对美国游客的健康新闻。当我使用 Goutte 在 localhost 中访问它时,它会给出特定于印度(这是我的位置)的结果。有什么方法可以在抓取时获取美国的特定新闻吗?
我已经设置了用户代理以确保它不是问题:
我想不出任何其他可能导致此问题的差异。
php - 如何在 Goutte 中设置 cookie?
我不知道如何在 Goutte 中设置 cookie。我正在尝试以下代码:
我附上了这个名字的 cookie 图像。如何设置此 cookie?
php - 使用 gotte 从文件/字符串中读取
我正在使用 Goutte 制作网页抓取工具。
为了开发,我保存了一个我想遍历的 .html 文档(所以我不会经常向网站发出请求)。这是我到目前为止所拥有的:
根据我所知道的应该调用 Symfony\Component\BrowserKit 中的请求,并传入原始正文数据。这是我收到的错误消息:
如果我只使用 DomCrawler,那么使用字符串创建爬虫并非易事。(参见:http ://symfony.com/doc/current/components/dom_crawler.html )。我只是不确定如何用 Goutte 做同样的事情。
提前致谢。
php - 使用 Goutte 抓取时 PHP 返回数组
我正在尝试使用 goutte 返回一组项目,我可以将它们打印出来,但我希望它们在一个数组中,就像一个 API。这是示例代码。我正在使用 Laravel 5.1。
我得到的只是一个空数组。
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.* 但除此之外,我不在乎。我怎样才能让它工作?
谢谢
php - 通过为要遵循的每个链接启动 pthread 来使用 PHP 和 Goutte 抓取网页
我一直在尝试使用 PHP 和 Goutte 实现刮板。如果我只使用一个线程并按顺序刮掉所有东西,一切都会很好。为了加快这个过程,我希望:
- 加载初始页面,其中包含几个指向需要抓取的页面的链接以及用于分页的链接。
- 为需要抓取的每个链接启动不同的 pthread,以便抓取可以并行进行。
- 一旦从主线程启动了该页面的所有 pthread,主线程将导航到下一页并为该页面中的所有链接重复启动 pthread。
当然,我正在计划一种机制,以确保一次运行的线程数量不超过一定数量。
无论如何,我的问题目前与提供 Goutte 客户端和每个线程的链接有关。
显然,Goutte 客户端是不可序列化的,并且不能在线程构造函数中按原样传递,然后克隆,以便每个线程都有自己的 Goutte 客户端实例。
尝试使用原始客户端的克隆分配线程时出现以下错误:
致命错误:第 15 行 D:\users\Oriol\workspace\TravellScrapper\pagescrapers\baseScraper.php 中的未捕获异常 'Exception' 和消息 'Serialization of 'Closure is not allowed'
这是 Thread 类的代码,它试图在其构造函数中克隆 Goutte 客户端。
关于如何实现这一点的任何建议?我需要在每个线程中复制 Goutte 客户端,以便它包含所有会话信息并且我可以单击链接。
symfony - Goutte/Guzzle 设置配置选项
我正在抓取一个返回重定向的网页,所以我想在我crawler
的那个中添加一个配置选项,让我设置allow_redirects
为false
. 查看有关重定向的 guzzle.readthedocs.org 网页,它说
由于我将 Goutte 与 Symfony2 一起使用,因此这些命令有些不同。例如:
谁能帮我发现如何将 guzzle 添加allow_redirects
到配置中?我觉得这将帮助我获得我想要的页面内容,而不是crawler
充满重定向代码。
谢谢!
php - 试图调用类“DOMElement”的名为“filter”的未定义方法
给出错误$col1
我可以使用它来让它工作,但你不能使用break
它,因为它不是真实的for loop