0

我正在尝试使用节点服务器从 agular2 应用程序中抓取一些信息。问题是我得到的响应是 index.js 文件,本质上是页面的“正在加载...”部分。

我正在使用这样的 npm request 或 request-promise 包:

var rp = require("request-promise");

rp('https://someurl.com')
    .then((html) => {
        // Do something with the response
    })
    .catch((err) => {
        console.log(err);
    })

但我不知道是否可以等待页面实际加载。我已经研究过可能使用 Angular Universal,但我需要在数据全部加载后获取数据,并且网站所有者反对使用 Universal。

有没有办法使这项工作?

4

1 回答 1

0

首先,您需要获得一个完全呈现的页面。不幸的是,没有渲染过程就无法访问 JS 渲染的网页,但是我们可以使用“无头”浏览器来完成这个过程,比如 PhantomJS。

“无头浏览器是没有图形用户界面的网络浏览器。无头浏览器在类似于流行的网络浏览器的环境中提供对网页的自动控制”</p>

在这里我找到了一个很好的例子,它可以让你继续前进:https ://www.r-bloggers.com/web-scraping-javascript-rendered-sites/

此外,您可以查看这篇关于 Angularjs 支持网站的 SEO 的文章,在“吐出 HTML 页面”下,您可以找到有用的信息:https://www.yearofmoo.com/2012/11/angularjs-and-seo。 html#sptting-out-the-html-pages

于 2017-04-03T20:50:27.983 回答