用Cheerio刮痧,文字不可见

时间:2017-01-08 20:22:44

标签: json node.js web-scraping cheerio

所以我一直在与Cheerio进行网络搜索,我能够找到我正在寻找的特定HTML元素,但出于某种原因,文本不存在。

例如,在我的网络浏览器中,当我检查元素时,我会看到<a href = "#" data-bind="text: MovieName, attr: { href: DetailsUrl }">Why Him?</a>

但是,当我在抓取时打印出对象时,我看到<a href = "#" data-bind="text: MovieName, attr: { href: DetailsUrl }"></a>所以当我调用.text()函数时,它不会返回任何内容。为什么会这样?

1 个答案:

答案 0 :(得分:3)

Inspect Element不是Cheerio能够看到的有效测试。您必须改为使用View Source

Inspect Element是应用浏览器中存在的所有各种技术(包括CSS和JavaScript)后浏览器如何呈现元素的实时视图。另一方面,View Source是服务器发送到浏览器的原始代码,您通常可以期望它与Cheerio将接收的内容相同。也就是说,假设您确保HTTP标头相同,尤其是与content negotiation相关的标头。

重要的是要理解,虽然Cheerio是一个DOM解析器,但它并不模拟浏览器。因此,如果文本是通过JavaScript添加的,那么文本就不会存在,因为JavaScript不会运行。

如果浏览器模拟对您很重要,您应该考虑使用PhantomJS。如果您需要高度逼真的浏览器呈现设置,请查看WebDriverLeadfoot