Не удается найти тег с помощью JSsoup, даже если тег существует в Node JS - PullRequest
0 голосов
/ 14 декабря 2018

Я экспериментировал со соскобом в сети и хотел попробовать сделать это с Node JS.У меня есть некоторый опыт работы с веб-поиском в Python с использованием модуля запросов и BeautifulSoup4, и я хотел воссоздать свой код в Node JS.Однако, когда я в основном отражаю свой код (за исключением изменения некоторых вещей, чтобы учесть разницу в синтаксисе), я не могу найти html-тег, который ищу.Я использую JSsoup с Node JS, так как это самая близкая вещь, которую я мог найти к BeautifulSoup.Вот мой код:

const request = require('request');
var jssoup = require('jssoup').default;

const options = {
  url: 'https://kith.com/collections/footwear/products/nkaj7292-002.xml',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
  }
};
function getVariant(error, response, body) {
  if (!error && response.statusCode == 200) {
      var soup = new jssoup(body);
      var nametag = soup.find('title');
      var product = nametag.text;
      console.log(product);
      var sizetag = soup.find('title', { string:'9' });
      console.log(sizetag);
  }
}
request(options, getVariant);

Код заканчивает тем, что нашел один тег правильно (<title> Nike Zoom Vomero 5/ACW (Black/Reflect Silver/Anthracite) AT3152-001 </title>), но возвращает 'undefined' для второго тега.Для справки, вот тег, который он пытается найти: <title>9</title>

Я также пытался использовать = вместо словаря и использовать содержимое и имя вместо строки, но пока не повезло.Что я здесь не так делаю?

Я тоже пытался просмотреть документацию JSsoup, но при поиске () у нее не так много.

1 Ответ

0 голосов
/ 14 декабря 2018

Как можно увидеть в источнике , ожидается, что любое string для сопоставления предоставляется в качестве 3-го аргумента .find, таким образом:

let sizetag = soup.find('title', undefined, '9');

Я согласен со Скоттом Сауетом, что открытие вопроса может быть целесообразным, особенно для исправления документации

...