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

时间:2017-04-03 20:41:12

标签: javascript node.js angular http request-promise

我试图使用节点服务器从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之后获取数据。

有没有让这项工作?

1 个答案:

答案 0 :(得分:0)

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

  

“无头浏览器是没有图形用户的Web浏览器   接口。无头浏览器提供对网页的自动控制   在类似于流行的网络浏览器的环境中“

在这里,我找到了一个很好的例子,可以让你继续前进: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