【发布时间】:2017-06-21 21:01:49
【问题描述】:
我想用 Nodejs 抓取页面“https://www.ukr.net/ua/news/sport.html”。 我正在尝试使用“请求”npm 模块发出基本的获取请求,这里是示例:
const inspect = require('eyespect').inspector();
const request = require('request');
const url = 'https://www.ukr.net/news/dat/sport/2/';
const options = {
method: 'get',
json: true,
url: url
};
request(options, (err, res, body) => {
if (err) {
inspect(err, 'error posting json');
return
}
const headers = res.headers;
const statusCode = res.statusCode;
inspect(headers, 'headers');
inspect(statusCode, 'statusCode');
inspect(body, 'body');
});
但在响应正文中我只得到
body: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">\n<html>\n<head>\n<META HTTP-EQUIV="expires"
CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">\n<META HTTP-EQUIV=Refresh
CONTENT="10">\n<meta HTTP-EQUIV="Content-type" CONTENT="text/html;
charset=utf-8">\n<title>www.ukr.net</title>\n</head>\n<body>\n
Идет загрузка, подождите .....\n</body>\n</html>'
如果我向 Postman 提出 get 请求,我得到的正是我所需要的:
请帮帮我。
【问题讨论】:
-
Идет загрузка, подождите .....=loading, please wait....- 您尝试抓取的页面包含动态加载的元素,因此您的初始请求会返回“正在加载”消息 - 也许您可以使用类似phantom js 为您呈现页面? stackoverflow.com/a/31059035/459517 - Postman 可能会自动执行类似的操作。
标签: node.js web-scraping request xmlhttprequest