问题标签 [headless-browser]
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.
python - 如何使用 Python 提取在 HTML 页面 javascript 块中定义的 JSON 对象?
我正在通过以下方式下载其中定义了数据的 HTML 页面:
我想提取在“window.blog.data”中定义的 JSON 对象。有没有比手动解析更简单的方法?(我正在研究 Beautiful Soap 但似乎找不到一种无需解析即可返回确切对象的方法)
谢谢
编辑: 使用 python 无头浏览器(例如,Ghost.py)执行此操作是否可能且更正确?
javascript - Heisenbug 自带无头浏览器
我正在开发基于 WebKit(使用 C++/Qt4)并支持 JavaScript 的无头浏览器。这样做的主要目的是能够生成大量基于 JavaScript 的网站的 HTML 快照(参见 Backbone.js 或任何其他 JavaScript MVC)。
我知道没有任何方法可以知道页面何时完全加载(请参阅这个问题),因此,在我收到信号(此处loadFinished
的文档)后,我创建了一个计时器并开始轮询 DOM 内容(就像每隔 X 毫秒检查一次 DOM 的内容)以查看是否有任何更改。如果没有,我假设页面已加载并打印结果。请记住,我已经知道这不是近乎完美的解决方案,但这是我能想到的唯一一个。如果您有更好的想法,请回答这个问题
注意:计时器是非阻塞的,这意味着在 WebKit 中运行的所有内容都不应该以任何方式受到影响/阻塞/暂停。
在用一些页面测试了无头浏览器之后,一切似乎都运行良好(或至少如预期的那样)。但这里是 heisenbug 出现的地方。应该从 PHP 脚本调用无头浏览器,该脚本应该等待(阻塞调用)一些输出,然后打印它。
在我的测试机器(Apache 2.3.14,PHP 5.4.6)上,运行 PHP 脚本输出所需的结果,也就是无头浏览器获取网站,运行 JavaScript 并打印用户将看到的内容;但是在生产服务器中运行相同的脚本会获取网站,运行一些JavaScript 代码并打印结果。
无头浏览器的源代码和我正在使用的 PHP 脚本可以在这里找到。
注意:计时器(如您在无头浏览器的源代码中所见)设置为 1 秒,但设置更大的时间并不能解决问题
注意 2:捕获所有 JavaScript 错误不会显示任何内容,因此这不是因为缺少函数、错误的参数或任何其他类型的错误代码。
我正在使用 2 个网站测试无头浏览器。 这个在我的测试机器和生产服务器上都可以工作,而这个只在我的测试机器上工作。
我更倾向于认为这是第二个网站的 JavaScript 代码中的一些奇怪错误,而不是无头浏览器的代码,因为它生成了第一个网站的完美 HTML 快照,但话又说回来,这是一个heisenbug 所以我不确定是什么导致了这一切。
任何想法/意见将不胜感激。谢谢
javascript - CasperJS 像 for 循环一样多次提交和评估
我正在尝试使用 CasperJS 来自动化一些通常需要大量时间才能完成的步骤。基本上我需要登录到我们的 CMS 并检查是否安装了一些插件。如果它们是,则只需更新它们,但如果它们不是,则创建它们。我设法登录并进入包含插件列表的页面,但我在这里遇到了麻烦。这是我需要做的,用伪代码:
这是代码
会发生什么情况是我的表单连续多次提交,并且在我的“然后”步骤中我最终多次捕获同一页面......如何解决这个问题?
objective-c - iOS的无头浏览器?
基本上,我要做的是创建一个可以访问网站、登录并下载某些信息的应用程序。有人告诉我,最有效的方法是使用“无头 Web 浏览器”,即没有前端的 Web 界面,例如 HTMLUnit。但是,我无法为 Objective-c 找到这样的东西(它是一个 iOS 应用程序)。有谁知道我在哪里可以找到一个?
谢谢,
哈尔加瓦
capybara - Capybara Poltergeist - 网站显示启用 cookie 的消息
我正在运行 Capybara 1.1.2 和 Poltergeist 1.0.1 进行无头测试。使用 selenium 驱动程序可以正常运行测试。但是对于 poltergeist,站点快照声明 cookie 已禁用。我是否缺少任何配置。默认情况下不应该启用cookie吗?
javascript - 如何让 PhantomJS 在渲染截图时包含背景图片?
我正在使用 PhantomJS 截取网页截图,使用https://github.com/ariya/phantomjs/wiki/Screen-Capture中详述的 page.render() 方法。
它工作正常,除了背景图像,全部有时会出现空白。如果您转到http://screener.brachium-system.net/并输入http://www.bing.com/作为 URL,您可以看到问题的示例,背景图像应该有一个很大的空白区域是。
有没有办法强制显示背景图像?
python - 用于 GAE 的 Python 无头浏览器
我正在尝试在 Google Appengine 上将 Angular.js 客户端与 webapp2 一起使用。
为了解决 SEO 问题,想法是使用无头浏览器来运行 javascript 服务器端并将生成的 html 提供给爬虫。
是否有任何在谷歌应用引擎上运行的 Python 无头浏览器?
phantomjs - 使用 behat 测试本地 PHP Web 应用程序时,Sahi + PhantomJS 失败
我在测试设置了 behat+sahi+phantomjs 的本地托管 Web 应用程序时遇到问题。
- 我只用 behat+sahi+chrome 运行了完整的套件,效果很好
- 我还针对运行良好的现场 stie 测试了一个小样本 behat 测试
当我将 base_url 指向本地托管的应用程序或部署了该应用程序的服务器时,问题似乎都会发生
像这样简单的事情:
输出结果:
我正在使用此处详述的设置:http: //shaneuckland.co.uk/2012/11/headless-behatmink-testing-with-sahi-and-phantomjs/
这是配置问题吗?还是因为该应用程序也托管在本地主机上?
我可以尝试如何进一步解决此问题?
谢谢
java - 在 Java 中“浏览”页面并提交表单的最简单方法
我需要做的是浏览到一个网页,登录,然后浏览到该站点上需要您登录的另一个网页,因此它需要保存 cookie。之后,我需要单击该页面上的一个元素,我将在其中填写表单并获取网页返回给我的消息。我需要实际转到页面并单击按钮(假设只是直接导航到链接)的原因是因为每次登录并单击链接时都会为您分配一个会话 ID,而且它总是不同的。该按钮看起来像这样,它不是普通的 href 链接:
无论如何,最简单的方法是什么?谢谢。
更新:在尝试了 HTMLunit 和其他无头浏览器库之后,似乎没有使用任何“无头”。我最近发现的关于这个页面的另一件事是,所有的 HTML 都是一些奇怪的格式......它都在一个脚本标签中。这是一个示例。
当我检查按钮上的元素时,我在上面为按钮发布的 HTML 代码会出现,但在查看源代码时不会出现。基本上,我需要做的是使用某种 GUI 并让用户导航到链接,然后让程序填写信息。有谁知道我该怎么做?谢谢。
c++ - 这些编程语言的无头浏览器库
HtmlUnit 是一个基于 Java 的无头浏览器库。是否有适用于 C/C++、D 和 Go 编程语言的无头浏览器库?