2015-05-06 3 views
2

Я пытаюсь получить некоторые данные с веб-сайта с помощью ajax.Как выбрать определенные текстовые узлы с помощью jquery?

Это мой код с Ajax Methode POST:

$ (данные) .find ('COL-MD-9 .panel:. Л (5)') каждый (функция() { консоли. .log ($ (это) .find ('панель тела .sp-карта тд: эк (1) центр.') .text());

консоль:

Mc-Wars Сеть IP : mc-wars.org Проголосовать - Инфо о сервере Веб-сайт

Я просто хочу ge t первая строка: Сеть Mc-Wars

Пожалуйста, помогите!

: есть изображение html-кода Im scraping.

Html code

Вот изображение консоли после выскабливания. (Мне просто нужно в первой строке

console

Это код с сайта Im соскоба:.

<div onclick="location.href='//www.serverpact.com/vote-20129 ';" class="panel panel-default sp-plane"> 
         <div class="ribbon ribbon-small ribbon-blue"> 
          <div class="banner"> 
           <div style="font-size: 14px;text-align: center;" class="text">#1</div> 
          </div> 
         </div> 
         <div style="padding: 5px;" class="panel-body"> 
          <table class="sp-card"> 
           <tbody><tr> 
            <td style="font-weight: bold;vertical-align: middle;"><center><i class="fa fa-thumbs-up"></i><br>8384<br><br>#1</center></td> 
            <td style="font-weight: bold;vertical-align: middle;"> 
             <center> 
             Mc-Wars Network<br> 
             <b>IP: mc-wars.org<br> 
             <a style="margin-top: 5px;" class="btn btn-primary btn-sm" href="//www.serverpact.com/vote-20129 ">Vote - Server info</a> 
             <a style="margin-top: 5px;" class="btn btn-success btn-sm" href="http://mc-wars.org">Website</a> 
             </b></center> 
            </td> 
            <td width="500px" class="hidden-xs"> 
            <a href="http://mc-wars.org" target="_blank"><img style="margin-top: 7px;margin-bottom: 3px;border-radius: 4px;" src="http://www.serverpact.com/b/20129.gif" alt="Mc-Wars Network" class="img-responsive hidden-xs"></a> 
             <span style="font-size: 13px;"> 
              McWars is a minecraft pvp based server where you will have to build a fortress for your team and destroy the other teams base to win. With more than 10 different classes to choose, youll love it. 
             </span>    
            </td> 
           </tr> 
          </tbody></table> 
         </div> 
        </div> 

ответ

1

Вероятно текст() сочетает в себе все дочерние текстовые узлы

Что вам нужно. возможно, чтобы получить текстовые узлы как узлов, затем получить их содержимое. See this post для примера.

1

Вот фрагмент, в котором я перемещаю дочерние узлы center в td на соответствующий текстовый узел. Обратите внимание, что whitespace создает дочерний узел, поэтому, например, перед узлом center theres представляет собой только текстовый узел с пробелом (это не имеет значения в этом случае, но это то, о чем вы должны знать).

document.write('here you go:' + $('#firstDiv td:nth-child(2) center')[0].childNodes[0].textContent)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="firstDiv"> 
 
     <table id="coolTable"> 
 
      <tbody> 
 
      <tr> 
 
       <td> 
 
       </td> 
 
       <td> 
 
        <center> 
 
         The text I need! 
 
        <br> 
 
        <b> 
 
        The text I dont need! 
 
        </b> 
 
        </center> 
 
      </td> 
 
      </tr> 
 
      </tbody> 
 
     </table> 
 
    </div>

Смотрите также: MDN: Whitespace in the DOM

+0

Как я могу позволить моему javascript-коду игнорировать пробелы? – Infinity

+0

Вы читали статью, к которой я привязался? У этого есть некоторые функции полезности для этого, как 'first_child (par)' – ekuusela

1

Существует способ сделать это:

$(data).find('#firstDiv #coolTable').each(function() { 
console.log($.trim($(this).find('tbody tr td:eq(1) center').contents()[0].nodeValue))}); 
+0

Когда я заменяю функцию .text() на .contents() [0].nodeValue Я получаю эту ошибку = Uncaught TypeError: Не могу прочитать свойство nodeValue неопределенного – Infinity

+0

Вы используете метод find, который ищет элементы класса, а не элементы id, как вы определили в своей структуре html. Только замените свой скрипт выше, как только я уже проверил его, чтобы заставить его работать. –

+0

Что касается вопроса, который вы задали @ekuusela, вы можете удалить пробелы, используя метод jQuery $ .trim ('string_here'), как я уже использовал в своем ответе. Не забыл проголосовать, полезно ли это. Спасибо! –

1

Ok, ваш вопрос сильно изменился!
Добавить в конце вашего .text(), который будет выполнять работу:

.match(/[^\n]+/g)[0] 

Обратите внимание, что все линии могут быть перехвачены путем изменения индекса, где «0» является первой линией, «1» второй и последовательный.

+0

@Infinity, это сработало? Не забудьте отметить принятый ответ по вашему выбору. –

+0

Нет, теперь я получаю эту ошибку. Uncaught TypeError: Не удается прочитать свойство '0' из null (он получает весь текст, когда я не использую .match в конце) – Infinity

+0

Можете ли вы опубликовать код и структуру HTML, чтобы я мог попробовать что-нибудь здесь? –

Смежные вопросы