Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ChereIO和用于web抓取的url执行document.getElementsByCassName()的等效操作_Javascript_Jquery_Node.js_Url_Cheerio - Fatal编程技术网

Javascript 使用ChereIO和用于web抓取的url执行document.getElementsByCassName()的等效操作

Javascript 使用ChereIO和用于web抓取的url执行document.getElementsByCassName()的等效操作,javascript,jquery,node.js,url,cheerio,Javascript,Jquery,Node.js,Url,Cheerio,这在浏览器中正常工作,但当我尝试对cheerio和node.js执行相同操作时,它不起作用: var request = require('request'); var cheerio = require('cheerio'); var url = 'https://www.google.fr/search?ei=apX6WdzaIMzWUabjqvAF&q=ok&oq=ok&gs_l=psy-ab.3..0i67k1l4j0j0i67k1l2j0i131k1j0j0i6

这在浏览器中正常工作,但当我尝试对cheerio和node.js执行相同操作时,它不起作用:

var request = require('request');
var cheerio = require('cheerio');
var url = 'https://www.google.fr/search?ei=apX6WdzaIMzWUabjqvAF&q=ok&oq=ok&gs_l=psy-ab.3..0i67k1l4j0j0i67k1l2j0i131k1j0j0i67k1.2633.3962.0.4021.3.3.0.0.0.0.58.169.3.3.0....0...1.1.64.psy-ab..0.3.169....0.524Rrv-4zlU'

request(url, function (error, response, html) {
  if (!error && response.statusCode == 200) {
    var $ = cheerio.load(html);
    console.log($('.r')[0].innerText);
  }
});
我从未使用过cheerio,这段代码在终端中给了我未定义的消息,为什么

根据,看起来您可以使用:

$('.r').first().text()

我不知道cheerio是否像jQuery一样支持直接数组访问,而且由于这些不是真正的DOM对象(而是cheerio创建的伪对象),我在cheerio文档中看不到对
.innerText
的任何支持,事实上,Github搜索“innerText”也不会得到任何点击。看起来您可以在Cheerio集合对象上使用
.html()
.text()

如果您获得了一个特定的节点对象,就像您可能一直试图使用
$('.r')[0]
,则该节点对象上支持的属性(不同于cheerio集合对象)如下所示:

tagName
parentNode
previousSibling
nextSibling
nodeValue
firstChild
childNodes
lastChild
因此,如果您得到实际的节点对象,您可能会使用:

$('.r').get(0).nodeValue

这将获得节点的原始内容。我希望前面的
.text()
示例可能是更安全、更容易获得结果的方法。

为什么不使用
$('.r').text()
?您确认了
html
的值是预期值吗?当我使用.text()时,表示我:$(…)[0]。文本不是函数,是的,html的值是预期值
$('.r').get(0).nodeValue