Как я могу очистить только элементы тега h3? - PullRequest
0 голосов
/ 24 июня 2018

Я хочу очистить только элементы тега h3. HTML похож на

<h3 class="index_title">
    <a href="/test/1112">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit                          
    </a>
</h3>

Я написал коды,

var Crawler = require("node-webcrawler");
var url = require('url');
var connection = require('./mysqlConnection'); 

var c = new Crawler({
  maxConnections : 10,
  callback : function (error, result, $) {
      if(error){
          console.log(error);
      }else{
        const titles = $(".index_title");
          for(var i = 0; i < titles.length; i ++){
            const title = $(titles[i]).text();
            var query = 'INSERT INTO crawling (title) VALUES ("' + title + '")';
            connection.query(query, function(err, rows) {
              console.log(err);
            });
          }
      }
  }
});
 c.queue('https://xxxxxxx.jp/'); 

Когда я запускаю коды, " Lorem ipsum dolor sit amet, consectetur adipiscing elit" в БД, поэтомутам бесполезное пространство. Я хочу получить только буквы Lorem ipsum ~~, но я думаю, что тег в теге h3 вызывает эту странную вещь. Я переписал

const titles = $(".index_title").trim();

, но за это время TypeError: $ (..... trim не является функцией ошибки. Что не так в моих кодах? Как это исправить?

1 Ответ

0 голосов
/ 24 июня 2018

ПРОБЛЕМА

ПЕРВОНАЧАЛЬНЫЙ АНАЛИЗ

Похоже, что проблема, с которой вы столкнулись, была в том, что jQuery возвращает вам список нативных элементов DOM вместо того, чтобы jQueryэлемент для работы.Я подозреваю, что это как-то связано с использованием ванильного цикла, а не с каким-либо методом, предоставляемым jQuery.

ЗАКЛЮЧИТЕЛЬНОЕ ЗАКЛЮЧЕНИЕ

После работы с версиями javascript и jquery, приведенными ниже, онпохоже, что $('...') дает вам список собственных элементов DOM, независимо от структуры цикла.Однако я не понял, что вам нужно будет преобразовать извлеченный узел INTO в элемент jquery (видимый на $(this)), что, безусловно, не очень желательно.Для прозрачности оба фрагмента кода доступны в рабочем, минимальном виде ниже.

Пример минимального рабочего кода:

// jQuery only
$(".index_title").each(function() {
  const title = $(this).text().trim();
  console.log(title);
});


// Javascript only
const titles = document.getElementsByClassName('index_title');
for(var i = 0; i < titles.length; i ++) {
  const title = titles[i].innerText.trim();
  console.log(title);
}
<html>
<head></head>
<body>
    <h3 class="index_title">
      <a href="/test/1112">
              1 Lorem ipsum dolor sit amet, consectetur adipiscing elit                          
      </a>
   </h3>
  <h3 class="index_title">
     <a href="/test/1112">
              2 Lorem ipsum dolor sit amet, consectetur adipiscing elit                          
     </a>
  </h3>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...