【问题标题】:Executing all JavaScript page using perl [duplicate]使用 perl 执行所有 JavaScript 页面 [重复]
【发布时间】:2012-10-15 16:16:17
【问题描述】:

可能重复:
How can I get dynamically web content using Perl?

我一直在研究让 javascript 在网页上执行的方法,但不完全理解某些解决方案。

我将以 TechCrunch 为例。如果您查看 TechCrunch 上的一篇文章,您会在每个页面的顶部看到,它们有一个视觉效果来显示该页面已经完成了多少推文、点赞、cmets。如果我想抓取此页面并收集该信息,perl 中是否有解决方案?

我查看了 WWW::Scripter 和 WWW::Mechanize::Plugin::JavaScript。可能是因为我不完全了解他们提供了什么。但是有没有办法让我传入一个 URL 并让它在页面上运行 javascript,就像浏览器一样,而无需传递变量或其他任何特殊的东西来让它执行。

【问题讨论】:

  • 请注意,如果您确实找到了一种抓取 techcrunch 页面的方法并且他们发现您这样做了,他们会尽其所能(在技术上如果不合法)让您破产。
  • 感谢其他链接。如果需要,我会看看这些并关闭这个问题。出于某种原因,他们没有出现在我的搜索中:(。@Paul 我完全理解抓取页面的合法性。我以 TechCrunch 为例。您的回答并不真正适用于所询问的内容。

标签: javascript perl web-scraping


【解决方案1】:

这很难做到。您实际上会让您的 Perl 运行一个完整的浏览器引擎,该引擎加载并运行所需的页面,然后检测页面何时加载,您将不得不以某种方式进入该浏览器引擎以访问 DOM(可能通过注入javascript) 从该页面读出值。之所以如此复杂,是因为您想要的数据不在页面 HTML 中,而是通过 javascript 插入页面中。

一个更实用的解决方案将涉及逆向工程,页面本身从中获取数据,然后从您的服务器上的 perl 构建您自己的 Web 调用,从页面获取数据的同一位置获取数据。

在任何一种情况下,如果您不使用公开的、记录在案的 API,如果主机更改了获取数据的方式,您的方法随时可能中断。

【讨论】:

    最近更新 更多