我想知道1960-2015
期内一些国家的人口。
我发现this site包含这些数据,我有兴趣使用Node.js
下载它。
我读到有一些APIs,但我并不了解如何使用它们。
我去了this site(允许您以XML
格式创建和下载查询),我查找了我感兴趣的表格。
我设置了我感兴趣的参数,并下载了查询:
<?xml version="1.0" encoding="utf-8"?>
<StructureSpecificDataQuery xmlns="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/message">
<!--NSI Web client v3.11.0.0-->
<Header>
<ID>IDREF47</ID>
<Test>false</Test>
<Prepared>2018-04-07T10:31:11.2310882+02:00</Prepared>
<Sender id="Unknown" />
<Receiver id="Unknown" />
</Header>
<Query>
<ReturnDetails defaultLimit="361914" detail="Full" observationAction="Active" xmlns="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/query">
<Structure dimensionAtObservation="TIME_PERIOD" structureID="StructureId">
<Structure xmlns="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/common">
<Ref agencyID="WB" id="WDI" version="1.0" xmlns="" />
</Structure>
</Structure>
</ReturnDetails>
<DataWhere xmlns="http://www.sdmx.org/resources/sdmxml/schemas/v2_1/query">
<Dataflow>
<Ref agencyID="WB" id="DF_UNDATA_WDI" version="1.0" xmlns="" />
</Dataflow>
<TimeDimensionValue>
<TimeValue operator="greaterThanOrEqual">1960-01-01</TimeValue>
<TimeValue operator="lessThanOrEqual">2015-12-31</TimeValue>
</TimeDimensionValue>
<Or>
<DimensionValue>
<ID>SERIES</ID>
<Value operator="equal">SP_POP_TOTL</Value>
</DimensionValue>
</Or>
<Or>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">ALB</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">AUT</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">BEL</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">BGR</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">HRV</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">CYP</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">DNK</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">EST</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">FIN</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">FRA</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">DEU</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">GRC</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">ISL</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">ITA</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">LVA</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">NLD</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">NOR</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">POL</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">PRT</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">ROM</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">SVK</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">SVN</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">ESP</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">SWE</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">CHE</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">GBR</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">EMU</Value>
</DimensionValue>
<DimensionValue>
<ID>REF_AREA</ID>
<Value operator="equal">EUU</Value>
</DimensionValue>
</Or>
</DataWhere>
</Query>
</StructureSpecificDataQuery>
现在我必须做一个HTTP Post请求。 我安装request-promise package。
现在我不知道该怎么做。我想过使用这段代码,但是我在哪里插入下载的查询?
var cheerio = require('cheerio');
var request = require('request-promise');
var methods = {};
var options = {
uri: '???',
transform: function(body) {
return cheerio.load(body);
}
};
methods.download = async function(req, res) {
request(options)
.then(function($) {
// Process html like you would with jQuery...
})
.catch(function(err) {
// Crawling failed or Cheerio choked...
});
}
有人可以帮助我吗?
答案 0 :(得分:0)
提供的SDMX API陈旧且不易使用。我个人只是从表中选择所需的数据并以csv或xml格式下载。这比使用过时的API要容易得多。