用 Cheerio 抓取,文本不可见

Scraping with Cheerio, text is not visible

所以我一直在使用 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() 函数时,它没有 return 任何东西。为什么会这样?

Inspect Element 不是 Cheerio 能够看到某些东西的有效测试。您必须改用 View Source

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

相关的那些

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

如果浏览器模拟对您很重要,您应该考虑使用 PhantomJS. If you need a highly realistic browser rendering setup, then look into WebDriver and Leadfoot