问题标签 [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.

0 投票
2 回答
3715 浏览

azure - 无头浏览器和 Windows Azure 网站

我正在尝试使用无头浏览器进行爬行,以在我正在开发的开源项目中添加 SEO 功能。

项目示例站点通过 Azure 网站部署。

我尝试了几种方法来使用不同的解决方案来完成任务,例如 Selenium .NET(PhantomJSDriver、HTMLUnitDriver、...),甚至是独立的 PhantomJs .exe 文件。

我正在使用无头浏览器,因为该站点基于 DurandalJS,因此它需要执行脚本并等待条件为真才能返回生成的 HTML。出于这个原因,不能使用 WebClient/WebResponse 类或 HTMLAgilityPack 之类的东西,它们在非 JavaScript 网站上工作得很好。

以上所有方法都适用于我的 devbox localhost 环境,但在将站点上传到 Azure 网站时出现问题。使用独立 phantomjs 时,站点在访问 url 端点时冻结,并在一段时间后返回 HTTP 502 错误。如果使用 Selenium Webdriver,我会得到一个

我认为问题在于在 Azure 中运行 .exe 文件而不是代码。我知道可以通过 WebRole/WebWorkers 在 Azure CloudServices 中运行 .exe 文件,但需要留在 Azure 网站中以保持简单。

可以在 Azure 网站中运行无头浏览器吗?有没有人遇到过这种情况?

我的独立 PhantomJS 解决方案的代码是

对于 Selenium 选项

谢谢!!

0 投票
1 回答
1279 浏览

javascript - 如何使用 phantom.js 抓取 javascript 注入的图像 src 和 alt?

我正在使用以下脚本使用 phantom.js 抓取图像:

但是,脚本在我定义变量后挂起a,这意味着它不会遍历并返回 src 和 alt 属性。当我console.log(a)返回 34 时,我相信我有适当的图像资源。如何访问 src 和 alt 信息?谢谢!

0 投票
1 回答
869 浏览

python - Error using ghost.py to scrape a page

I'm trying to use ghost.py to scrape a website using a script that works on my local machine:

However, when I add it to my web app, I get the obscenely long error below, and Python crashes. I've read every line of the error and can't figure out what the problem is. Any help would be amazing to let me know the first direction to take in making it work! Thank you!!!

0 投票
3 回答
7216 浏览

python - 防止在 Python 驱动的 PhantomJS/Selenium 中下载 CSS/其他资源

我试图通过阻止下载 CSS/其他资源来加速 Python 中的 Selenium/PhantomJS webscraper。我只需要下载 img src 和 alt 标签。我找到了这段代码:

via:如何控制 PhantomJS 跳过下载某种资源?

如何/在哪里可以在 Python 驱动的 Selenium 中实现此代码?或者,还有其他更好的方法来阻止 CSS/其他资源下载吗?

注意:我已经找到了如何通过编辑 service_args 变量来防止图像下载:

如何在 python webdriver 中为 phantomjs/ghostdriver 设置代理?

在 python 上带有 Selenium 的 PhantomJS 1.8。如何阻止图像?

但是 service_args 无法帮助我处理 CSS 之类的资源。谢谢!

0 投票
1 回答
2242 浏览

macos - 如何在 mac 上使用 watir webdriver 和 headless gem 以无头模式运行测试?

我已经安装了 gem - headless (1.0.1) 并尝试通过将 BROWSER 设置为 headless 来运行测试,并且我还在我的盒子上安装了 xvfb 但是我收到以下错误

未知驱动程序无头。

关于 headless gem 的 read me 文件的信息如下:“Headless 仅适用于在 OSX 上使用 X 服务器的应用程序。实际上,任何本机 OSX 应用程序都使用 Quartz,OSX 图形子系统,而不是 X。这包括 OSX 上的 Chrome 和 Firefox 。”

那么我可以使用 watir webdriver 在 Mac 上以无头模式运行测试吗?

0 投票
1 回答
1220 浏览

python - Python:没有管理员权限的无头 Selenium

我在 python 中有一个使用 Selenium webdriver 的爬虫。我想在集群中启动它并让它运行大约 10 天。问题是:

我做了一些搜索和阅读。通常这可以通过使用 Xfvb 和 pyvirtualdisplay 来解决。它尚未安装在集群中。现在又出现了一个问题:

虽然我可以在 python VE 中安装 pyvirtualdisplay,但我无法运行

我没有个人桌面。有什么建议吗?

0 投票
1 回答
117 浏览

ruby - Watir-Webdriver 框架属性与其他来源不一致

我有一个问题,例如,如果我返回框架的某些属性,它们与 Firebug 中的属性不匹配。原因是我正在寻找一种方法来识别框架的用途。例如,在 www.cnet.com 上,它们总共加载了 19 帧,其中一些是带有 JavaScript 的 HTML。我想检查一些框架,但不是全部。

使用 Firebug,我看到了一些关于框架的有趣属性,我想根据其中一些属性过滤框架。

我有以下 Ruby 代码来举例说明我需要的属性:

输出如下:

然而,这是来自 www.cnet.com 页面的 childNodes/Children 的 Firebug 输出:

在此处输入图像描述

如果我提到 Firebug,列表中的第一项具有以下属性:

顺便说一句,我在 Linux 上的 Firefox 下使用无头的 water-webdriver。

任何帮助表示赞赏。

0 投票
1 回答
124 浏览

ruby - 使用 Watir Webdriver 速度问题提取链接

我在运行 Firefox 的 Linux 系统上使用无头的 Watir Webdriver,并且在从网页中提取链接时遇到了一些速度问题。问题似乎出在使用多个帧时。例如,返回 www.cnet.com 上的所有链接需要 10 分钟。

为什么要花这么长时间,我能做些什么来加快速度吗?

例如,这些是我采用的一些典型时间。从“默认框架”中获取所有链接需要大约 8 秒,但从框架中获取这些链接需要 20 秒:

事实上,在这种情况下,没有一个框架实际上包含任何链接。(请参阅我提出的关于跳过某些帧Watir-Webdriver Frame Attributes Not Congurent with Other Sources 的这个问题)

从页面中提取链接的代码如下:

用于从帧中提取链接的代码如下:

任何帮助,将不胜感激。

0 投票
1 回答
213 浏览

javascript - JSON.stringify 根据两个不同的页面上下文表现不同

我正在使用 CasperJS 来抓取网站。我发现了一件有趣的事情,但我不确定它为什么会发生。

因此,使用 CasperJS(和 PhantomJS),您可以使用他们的Evaluate PhantomJS Evaluate CasperJS方法进入页面上下文。

我在页面上下文中创建了一个对象,为了将它返回给 CasperJS,我将它转换为字符串。这是我所做的:

因此,在两个不同的页面中,结果是不同的:

在此页面上下文中,JSON_obj 值为:

在此其他页面上下文中,JSON_obj 值为:

这很糟糕,因为我在 Ruby 中捕获了结果,并且在执行时JSON.parse,对于第一种情况,它将数组视为字符串......知道为什么JSON.stringify在不同的页面上下文中会表现得“不同”吗?对我来说很有趣!

0 投票
1 回答
423 浏览

angularjs - 没有 sudo 访问权限的 AngularJS 和 PhantomJS

我使用 AngularJS 创建了一个站点,因为我认为它会加快这个过程。现在结果完全是头痛。SEO 对网站来说是必不可少的,而且很明显,尽管 AngularJS 网站是由 Google 创建的,但它是不可抓取的。

我读了这篇文章,解释了一种解决方法: http ://www.yearofmoo.com/2012/11/angularjs-and-seo.html

我的问题是:如何在没有 sudo 访问权限的情况下安装或运行 PhantomJS(或任何其他无头浏览器)?如果是这样,我该怎么做?我以少量预算在 1and1 上托管该网站。