json - 用 Cheerio 抓取,文字不可见

标签 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() 函数时,它不会返回任何内容。为什么会出现这种情况?

最佳答案

Inspect Element 不是 Cheerio 能够看到某些内容的有效测试。您必须使用View Source相反。

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

重要的是要理解,虽然 Cheerio 是一个 DOM 解析器,但它并不模拟浏览器。因此,例如,如果通过 JavaScript 添加文本,则该文本将不会出现,因为 JavaScript 不会运行。

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

关于json - 用 Cheerio 抓取,文字不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41537460/

相关文章:

python - 将json字符串反序列化为python中的对象

javascript - Node.js 全屏打开 chrome

python - 网页抓取 : How to test if the root tag has a particular CSS class?

Python Mechanize/BeautifulSoup Scraping(迭代字典)

python - 如何从 Python 脚本中运行 Scrapy

objective-c - iPhone中如何从JSON格式的数组中一一提取值?

javascript - 使用 JSON 数组填充phonegap sqlite 数据库

sql - 无法在 jsonb_array_elements 之后添加 where 条件

javascript - 为什么要执行这个函数?

javascript - $从文档中的数组中提取