Соскоб в сети (Regex) - PullRequest
       3

Соскоб в сети (Regex)

0 голосов
/ 30 января 2019

Я пытаюсь выполнить некоторую очистку веб-страницы с помощью nodejs.

Я получаю тело запроса в виде HTML.

в HTML у вас есть этот фрагмент кода:

<h2>JavaScript required</h2>
<p>The Low Fare Finder requires JavaScript in order to work. Please use a browser that supports JavaScript, and mke sure that it is enabled.</p>
  </div>
<script type="text/javascript">
      (function () {

    new LowFareFinder.LowFareFinder({
        container: '#lff-container',
        ABCD: [{"code":"jhkj","name":"hjk","country":"gjhgj","imageUrl":"hgkjf/GRZ.png","nearby":["ghj","jhg","jh","jg"]
        },
        languageCode: 'en',
        pricesAvailable: true
    });
        })();

Мне нужна строка json, которая начинается после "ABCD".

Как лучше всего это сделать?

Спасибо Avi

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Если вы ищете текст после ABCD: без пробела с использованием регулярного выражения:

const regex = /(?<=ABCD:\s).*/mg;
const str = `<p>The Low Fare Finder requires JavaScript in order to work. Please use a browser that supports JavaScript, and mke sure that it is enabled.</p>
  </div>
<script type="text/javascript">
  (function () {

new LowFareFinder.LowFareFinder({
    container: '#lff-container',
    ABCD: [{"code":"jhkj","name":"hjk","country":"gjhgj","imageUrl":"hgkjf/GRZ.png","nearby":["ghj","jhg","jh","jg"]
    },
    languageCode: 'en',
    pricesAvailable: true
});
    })();\``;
let m;

while ((m = regex.exec(str)) !== null) {
  // This is necessary to avoid infinite loops with zero-width matches
  if (m.index === regex.lastIndex) {
    regex.lastIndex++;
  }

  // The result can be accessed through the `m`-variable.
  m.forEach((match, groupIndex) => {
    console.log(match);
  });
}
0 голосов
/ 30 января 2019

let str = `<h2>JavaScript required</h2>
<p>The Low Fare Finder requires JavaScript in order to work. Please use a browser that supports JavaScript, and mke sure that it is enabled.</p>
  </div>
<script type="text/javascript">
      (function () {

    new LowFareFinder.LowFareFinder({
        container: '#lff-container',
        ABCD: [{"code":"jhkj","name":"hjk","country":"gjhgj","imageUrl":"hgkjf/GRZ.png","nearby":["ghj","jhg","jh","jg"]
        },
        languageCode: 'en',
        pricesAvailable: true
    });
        })();`
        
let foo = str.match(/ABCD:.*?\n/gm)        
console.log(foo);

Надеюсь, это то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...