问题标签 [jsdom]
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.
javascript - Node Jsdom 爬取谷歌的反向图片搜索
我想以编程方式查找给定图像 URL 的类似图像的 URL 列表。我找不到任何免费的图片搜索 API,所以我试图通过抓取 Google 的Search by Image来做到这一点。
如果我有图片 URL,请说http://i.imgur.com/oLmwq.png,然后导航到https://www.google.com/searchbyimage?&image_url=http://i.imgur.com/oLmwq .png提供相关的图像和信息。
如何jsdom.env
生成浏览器从上述 URL 获取的 HTML?
这是我尝试过的(CoffeeScript):
您可以看到 HTML 与我们想要的不匹配。这是 Jsdom 的 HTTP 标头的问题吗?
javascript - 使用 node.js 和 jquery 进行抓取
我正在尝试按照本教程使用节点和 jquery 进行抓取-
http://net.tutsplus.com/tutorials/javascript-ajax/how-to-scrape-web-pages-with-node-js-and-jquery/
在其中,他们有一些代码如下所示 -
当我控制台记录window.Jquery 或window.$ 时,两者都未定义——但它们不应该是因为jsdom 应该将jquery 嵌入到页面中吗?为什么这没有发生?
node.js - 如何在 Node.js 中高效地进行网页抓取?
我正在尝试从购物网站 Express.com 上抓取一些数据。这是包含image、price、title、color(s)的许多产品中的 1 个。
我所做的非常幼稚且可能容易出错的方法是首先获取所有价格、图像、标题和颜色:
接下来,我用从 DOM 中提取的数据填充数组,这些数据是使用jsdom或Cheerio为 node.js 抓取库提取的。(在这种情况下是 Cheerio)。
最后,基于价格、标题、图像和颜色将匹配的假设创建一个产品对象:
这种方法速度慢,容易出错,而且非常抗 DRY。$('.cat-thu-product')
我在想,如果我们能够一次抓取并使用单个 for 循环从单个产品中提取相关信息,那就太好了。
但是你有没有试过在jsdom或Cheerio中遍历 DOM ?我不知道任何人甚至可以理解它。$('.cat-thu-product')
有人可以通过抓取包含所有相关信息的 div 元素然后提取必要的数据来展示我将如何使用这种建议的抓取方法吗?
或者也许有更好的方法来做到这一点?
ember.js - 早午餐,JSDom:对象 [jsdom NodeList]:包含 3 个项目没有方法“地图”
我正在尝试使用 Ember、Brunch 和 JSDom 进行无头测试。我正在使用 ember-brunch-skeleton 生成应用程序。
https://github.com/fuseelements/ember-brunch-skeleton
我已经安装了所有依赖项。
当我尝试运行“早午餐测试”时,出现以下错误。似乎我在这里缺少一些基本的东西,但这是我第一次使用 node.js/jsdom/mocha 等。我缺少什么?
node.js - Node.js Jsdom 返回 [Error: socket hang up] 代码:'ECONNRESET' }
尝试在 nodejs 下使用 jsdom 并收到此错误:
[错误:套接字挂起]代码:'ECONNRESET'}
使用 NodeJs v0.8.20,Ubuntu 12.04
node.js - AppFog 上的 Express 出错,但本地没有
当我在 AppFog 上托管我的应用程序时出现错误。第 50 行,当我调用 JSDOM 时......问题没有出现在本地,我不明白为什么它在远程不起作用......
我的代码(在本地工作):
我的错误(在 AppFog 上 - 我向支持人员发送了请求):
AppFog 上的日志:
用 Cheerio 编辑:
jquery - Node.js Crawler 将 result.body 作为 Buffer 而不是 html
我有一个来自https://github.com/sylvinus/node-crawler的超级简单的示例代码
输出是
如果我将 Url 更改为,比如说,,c.queue("http://bing.com")
我可以获得 html 文本。这种行为因网站而异,我不明白。
如果我更改console.log(result.body);
为console.log($('body').text());
,google.com 网站会给我一些奇怪的文字,看起来不像发送到我的浏览器的文字。
如果我将 Url 更改为Pinterest.com等其他网站,我开始在jsdom.js本身中出现错误。
所以我想这是代码本身的一些错误,但如果不是,有人可以帮忙指出我的错误吗?
注意: jQueryUrl
可能会添加参数new Crawler({})
以使其与您的 jQuery 文件位置一起使用。
javascript - 带有jsdom的多行属性
是否可以使用 jsdom 获取多行属性的值(我将它与 Node.js+JQuery 一起使用)?
要抓取的站点包括以下 HTML:
不幸的是,这被解析为
所以我无法提取标题和 href 属性,例如通过 JQuery: $("a").attr("data-title")
。
有任何想法吗?
node.js - Azure 上的 JSDom(本机 Node.js 模块)
我无法让依赖于 JSDo 的 nodejs 应用程序在 Azure 上工作,因为它依赖于本机模块 - Contextify,我了解 Azure 不提供本机模块的编译。
但是根据Azure 文档
由于 Windows Azure 云服务依赖于作为应用程序一部分部署的 node_modules 文件夹,因此作为已安装模块的一部分包含的任何本机模块都应该在云服务中工作,只要它是在 Windows 开发系统上安装和编译的。
它在我的开发盒上运行良好,因为它是在 npm 安装期间编译的,我不明白为什么它不能在 Azure 上运行,因为我提供了编译版本?如果它适用于我的 Windows 开发盒,则编译显然是成功的。我从本地 git 存储库部署到天蓝色,所以我想知道当我提交时编译的文件是否被遗漏了?
node.js - jsdom 和 $(document).ready
我看起来当我通过 运行页面时jsdom
,页面脚本中的$(document).ready
块没有被执行。
这是html:
和编码:
和输出:
我究竟做错了什么?
为满足荒谬的stackoverflow比率添加细节。
[解决方案]:
感谢 Dave 引导我找到正确的答案。
我认为完整的 jsdom 答案是这样的;不要使用 jsdom.jQuerify,添加脚本标签以在页面内脚本上方的页面中加载 jQuery(因为它需要在浏览器中加载页面)。
html:
代码: