我试图通过首先报废第一页然后转到航空公司的每个单独页面以获取网站网址来报废维基百科页面以获取航空公司列表。我将代码分为两个功能。一个是废弃主页并获取一个新的 url,第二个函数是从创建的 url 中废弃另一个页面以从该页面获取网站名称。我已经使用 request-promise 模块来获取 html,然后使用 Cheerio 来解析数据。
export async function getAirlinesWebsites(req,res) {
let response = await request(options_mainpage);
console.log(`Data`);
let $ = cheerio.load(response);
console.log('Response got');
$('tr').each((i,e)=>{
let children = '';
console.log('inside function ', i);
if($(e).children('td').children('a').attr('class') !== 'new') {
children = $(e).children('td').children('a').attr('href');
let wiki_url = 'https://en.wikipedia.org' + children;
console.log(`wiki_url = ${wiki_url}`);
let airline_url = getAirlineUrl(wiki_url);
console.log(`airline_url = ${airline_url}`);
}
})
然后 getAirlineUrl() 函数将根据提供的 url 解析另一个页面。
async function getAirlineUrl(url){
const wiki_child_options = {
url : url,
headers : headers
}
let child_response = await request(wiki_child_options);
let $ = cheerio.load(child_response);
let answer = $('.infobox.vcard').children('tbody').children('tr').children('td').children('span.url').text();
return answer;
})
但是,当我在父函数中控制台记录答案变量时,我得到一个 [object Promise] 值而不是字符串。我该如何解决这个问题?