如何向 Angular2 站点发出 HTTP 请求(用于抓取目的)?

How do I make a HTTP request (for scraping purposes) to an Angular2 site?

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

我正在使用 npm 请求或请求承诺包,如下所示:

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

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

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

有没有办法让这个工作?

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

“A headless browser is a web browser without a graphical user interface. Headless browsers provide automated control of a web page in an environment similar to popular web browsers”

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

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