целевой текст после тега br, используя cheerio - PullRequest
0 голосов
/ 09 июня 2019

Я занимаюсь созданием API путем очистки с помощью cheerio.Я снимаю с этого довольно запутанного сайта: http://www.vegasinsider.com/nfl/odds/las-vegas/

Я пытаюсь настроить таргетинг текста после этих <br> тегов внутри тега привязки в этом элементе <td>:

<td class="viCellBg1 cellTextNorm cellBorderL1 center_text nowrap" 
      width="56">
   <a class="cellTextNorm" href="/nfl/odds/las-vegas/line-movement/packers-@- 
       bears.cfm/date/9-05-19/time/2020#BT" target="_blank">
        &nbsp;<br>46u-10<br>-3½&nbsp;-10
   </a>
 </td>

Код ниже - то, что я использую, чтобы предназначаться для данных, которые я хочу.Проблема в том, что я не знаю, как получить этот текст после тегов <br>.Я попробовал .find ('br') и не смог заставить его работать.Вот код:

app.get("/nfl", function(req, res) {
  var results = [];

  axios.get("http://www.vegasinsider.com/nfl/odds/las-vegas/").then(function(response) {
    var $ = cheerio.load(response.data);

    $('span.cellTextHot').each(function(i,element) {
      // console.log($(element).text());
      var newObj = {
        time:$(element).text()
      }
      $(element).parent().children().each(function(i,thing){
        if(i===2){
          newObj.awayTeam = $(thing).text();
        }
        else if (i===4){
          newObj.homeTeam = $(thing).text();
        }
      });
      newObj.odds= $(element).parent().next().next().text().trim();
      $('.frodds-data-tbl').find('td').next().next().children().each(function(o, oddsThing){
        if(o===0){
          newObj.oddsThing = $(oddsThing).html();
        }
      });
    res.json(results);
  });
});

Вы можете видеть, что я могу вывести весь текст в этом поле в значение newObj.odds.Я пытался использовать что-то вроде следующей строки, где я нацеливаюсь на этот элемент td, перебираю и разбиваю каждую строку на свое собственное свойство newObj, например, newObj.oddsLine1 и newObj.oddsLine2.

Надеюсь, чтоимеет смысл.Любая помощь очень ценится.

1 Ответ

1 голос
/ 09 июня 2019

Вы не можете выбирать текстовые узлы с помощью cheerio, вам нужно использовать свойства / функции js dom:

$('td a br')[0].nextSibling.nodeValue

Примечание. $ (Css) [0] даст вам первый элемент в качестве объекта js.(а не объект приветствия)

...