#node.js
#node.js
Вопрос:
Я использую node js для выполнения веб-поиска.
Я хочу показать погоду, но всегда терплю неудачу.
это мой код, пожалуйста, скажите мне, в чем я ошибаюсь, спасибо.
const request = require('request')
const ironmans = [
'https://www.cwb.gov.tw/V7/forecast/town368/towns/6400800.htm?
type=Weatheramp;time=7Day',
]
async.map( ironmans, getInfo, (err, results)=>{
console.log(results);
})
function getInfo(url, callback){
request(url, function(err, res, body){
var $ = cheerio.load(body)
const result = [];
const table_tr = $(".Forecast-box table tr");
for (let i = 1; i <3; i ) { // tr
const table_td = table_tr.eq(i).find('td'); // (td)
const time = table_td.eq(2).text(); // time
const temperture = table_td.eq(4).text(); // temperture
const weather = table_td.eq(4).text(); // weather
result.push(Object.assign({ time, temperture, weather }));
}
console.log(result);
})
}
Спасибо.
Ответ №1:
Таблица погоды была добавлена к странице запросом xhr, это означает, что если вы используете request
для получения ресурса страницы, то вы не сможете получить таблицу данных (как вы View page source
). Попробуйте другие способы (безголовый браузер), простой способ обхода https://www.cwb.gov.tw/V7/forecast/town368/3Hr/6400800.htm
вместо https://www.cwb.gov.tw/V7/forecast/town368/towns/6400800.htm?
type=Weatheramp;time=7Day
Комментарии:
1. как я могу узнать, как использовать этот веб-сайт? где я могу найти? cwb.gov.tw/V7/forecast/town368/3Hr/6400800.htm
2. @samuraikyo37 Откройте инструмент разработчика (браузер Chrome) на вкладке Сеть, при нажатии кнопки к
1週預報
,過去24小時
или逐3小時預報
был запущен сетевой запрос. Это то, что вы хотите.3. Мне интересно, почему я не могу получить информацию о погоде (в каком столбце есть изображение солнца и луны), я пытаюсь: weather =table_tr.eq(3).text(); / или const a = $ («.Заголовок таблицы tr td окна прогноза»); weather = a.eq (1).text(); по-прежнему не работает. как я могу сделать? Спасибо