Tag: cheerio

cheeriojsparsing问题:找不到<a>标签?

背景 我在我的NodeJs应用程序中使用cheeriojsparsingHTML页面。 目标是从该页面获取一系列链接。 问题 图书馆运作良好,但我有一个特定的一套标签(两个<a>标签)的问题,因为cheerio不会认可我的生活! <a href="/wiki/Orokin_Void" title="Orokin Void" class="mw-redirect">Orokin Void</a> <a href="/wiki/Storage_Containers" title="Storage Containers" class="mw-redirect">Containers</a> 我检查并重新检查,看标签是否是理想的结构 所以,根据文档,下面的代码将打印2 : let htmlSource = '<a href="/wiki/Orokin_Void" title="Orokin Void" class="mw-redirect">Orokin Void</a> <a href="/wiki/Storage_Containers" title="Storage Containers" class="mw-redirect">Containers</a>'; let cheerioStuff = $(htmlSource).find("a").length; console.print(cheerioStuff); 相反,它打印0 。 这是令人着迷的,至less对我而言。 同样的问题似乎与另一个stringCorpus T3 <a href="/wiki/Defense" title="Defense">Defense</a> Reward 。 但是,它适用于以下一个: <div class="pi-data-value pi-font"><a href="/wiki/Orokin_Vault" title="Orokin Vault" […]

Node.js打印两次相同的结果,而不是一次

这是我的node.js应用程序代码: 这是我的html.js文件代码 /** * HTML Helpers */ 'use strict'; var cheerio = require('cheerio'); module.exports.gotHTML = function gotHTML(error, response, htmlBody) { if (!error && response.statusCode == 200) { const $ = cheerio.load(htmlBody); var reviews = []; var businesses = []; var combinedData; var reviewsSelectors = $('.js-hot-new-businesses-section .rating-qualifier'); var businessSelectors = $('.js-hot-new-businesses-section .biz-name'); reviewsSelectors.each(function (index, value) { […]

代码工作在控制台,但不是在terminal

我会尽可能具体,因为我是一个初学者,这是我的第一个问题在这里在stackoverflow :)! 我试图提取HTML页面中的一些数据属性的值,使用cheerio和nodeJs,这里是我的代码: var request = require('request'); var cheerio = require('cheerio'); var url = 'http://www.example.com/example'; request(url, function(err, resp, body){ var dataList = $(".example").map(function() { return $(this).data("example"); }).get(); console.log(dataList.join("|")); }); 这里是我正在工作的HTML: <span class="item-link"><span class="example" data-mel="example"> <img src="/#" alt="" /> </span></span> 所以我遇到的问题是,当我尝试在我的terminal中运行我的代码,我得到这个错误: 错误 但是当我在控制台chrome中运行这个部分时: var dataList = $(".mel").map(function() { return $(this).data("mel"); }).get(); console.log(dataList.join("|")); 有用 !!! :(但我想运行在我的terminal,所以我可以迭代! 所以我设法使这个代码在我的terminal工作: […]

无法在PhantomJS脚本中加载“cheerio”

我在Mac上使用节点版本4.8.1(自制安装),PhantomJS版本2.1.1和cheerio@0.22.0 现在,如果我需要像这样的phantomjs脚本cheerio // myscript.js var cheerio = require('cheerio'); console.log("done"); 并运行该脚本(没有其他的东西) $ phantomjs myscript.js 然后我会得到这个错误: TypeError: Object is not a constructor (evaluating 'require("inherits")(Parser, require("events").EventEmitter)') phantomjs://platform/Parser.js:124 我可以用PhantomJS做各种各样的事情。 我唯一不能使用的就是cheerio。 有没有一种方法让我在PhantomJS里面做快乐的工作? 还是可以替代cheerio的工作?

延迟请求和cheerio模块的请求

所以这是我用来抓取我的网页的代码(我使用请求和cheerio模块: for (let j = 1; j < nbRequest; j++) { const currentPromise = new Promise((resolve, reject) => { request( `https://www.url${j}`, (error, response, body) => { if (error || !response) { console.log("Error: " + error); } console.log("Status code: " + response.statusCode + ", Connected to the page"); var $ = cheerio.load(body); let output = { […]

如何检查一个元素是否与cheerio js重复的属性

我用cheerioparsingHTML文件(以后用Mochatesting),这些文件中的HTML元素可以有很多属性,我想检查属性是否在同一个元素中重复: 具有重复“class”属性的元素的示例部分文件: <div class="logo-center" data-something-very-long="something long" … class="logo" data-more-stuff> 这里是加载文件的代码: var fileContents = fs.readFileSync(file, "utf8"); var $ = cheerio.load(fileContents); 注意:它不一定是类属性,它可以是任何重复的其他属性。

为什么这个Cheerio属性select器不工作?

我想使用通常在jQuery中find的以下select器来创build一个可以在其子节点上工作的函数: var useroverviewHook = $("div[data-pnref='overview'] *[data-overviewsection]"); 但是,它不在Cheerio工作。 Nodejs控制台正在报告 console.log($(useroverviewHook).length) is 0 即使在浏览器中testing时,该值不是0,存在多个元素。 首先,我认为内容是dynamic的,但如果我输出 res.writeHead(200, {'Content-Type': 'text/plain'}); res.write(html); 数据概览部分在那里。 但是cheerio说不是。

.find不是cheerio对象上的函数

let playersCell = ` <td class="foo" colspan="2"> <a href="example.com"> <span class="bold">John Beluga</span> – Sarah Jay. </a> </td> ` let players = cheerio.load(playersCell) players.find('a').html() 我尝试加载一个htmlstring到cheerio.js并finda标签,但我越来越 [TypeError:players.find不是函数] Console.log显示给players

Cheerioerror handling程序节点js

我开始使用Node.js一个新的项目,我想知道是否有任何方法来pipe理从cheerio.load()函数返回什么。 我试图使用callback和承诺(然后赶上),但它没有工作。 例: var $ = cheerio.load(html); //what if it's falied ???? how I can handle it? 我问这是因为我试图运行脚本仆人时间,但有时它是工作,有时不。 顺便说一句:我使用npm站点的cheerio模块 – > npm install cheerio. 谢谢 :-)

节点js cheerioparsinghtml

所以我有一个问题,我不能得到一个电影的链接,我想刮“人们也喜欢”部分,它显示你的电影是相似的。 虽然因为有一个字符部分,我不能在一些电影上得到那个页面 function findCommonMovies(movie, callback){ request('http://www.imdb.com/find?ref_=nv_sr_fn&q='+ movie +'&s=all', function (error, response, body) { if (error){ return }else{ var $ = cheerio.load(body); var title = $(".result_text").first().text().split("(")[0].split(" ").join('') var commonMovies = [] var endurl = $(".findSection .findList .findResult .result_text a").attr("href") var test request('http://www.imdb.com' + endurl, function (err, response, body) { if (err){ console.log(err) }else{ var $ = […]