Извлечение проиндексированных страниц из Bing - PullRequest
1 голос
/ 14 марта 2020

Я хочу извлечь проиндексированные страницы страницы результатов Bing.

Мой код

function myFunction() {
var html = UrlFetchApp.fetch('https://www.bing.com/search?q=site%3Aapple.com').getContentText();
var doc = XmlService.parse(html);
var html = doc.getRootElement();
var indexed_pages = getElementsByClassName(html, 'sb_count')[0];
var output = XmlService.getRawFormat().format(menu);
return HtmlService.createHtmlOutput(indexed_pages);
}

Каждый раз, когда выдается ошибка:

Исключение: ошибка в строке 33: ссылка на сущность "nbsp" была указана, но не объявлена. (Строка 3)

Итак, в строке 3 возникла проблема с XmlService.

Когда я измените URL на https://www.bing.com/search?q=site%3Aapple.com%2Fuk, я получаю еще одну ошибку

Исключение: ошибка в строке 37: Строка "-" не допускается в комментариях. (строка 3)

Когда я изменяю URL на http://en.wikipedia.org/wiki/Document_Object_Model, это работает. Я предполагаю, что мой вывод что-то, XmlService не может проанализировать. Я просто не знаю, почему он может анализировать вывод Википедии, но не вывод Bing.

У вас есть идеи? Спасибо

1 Ответ

1 голос
/ 16 марта 2020

Вы хотите получить 400.000 Results с URL-адреса https://www.bing.com/search?q=site%3Aapple.com%2Fuk. Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Проблема и обходное решение:

К сожалению, кажется, что HTML из https://www.bing.com/search?q=site%3Aapple.com%2Fuk не может быть непосредственно проанализирован XmlService. Если вы хотите использовать XmlService, необходимо обработать данные HTML для анализа с помощью XmlService. Таким образом, в данном случае, в качестве обходного пути, как насчет непосредственного получения значения 400.000 Results с использованием регулярного выражения?

Пример сценария выглядит следующим образом.

Пример сценария:

var html = UrlFetchApp.fetch('https://www.bing.com/search?q=site%3Aapple.com%2Fuk').getContentText();
var res = /<span class\="sb_count">(\w.+?)<\/span>/.exec(html)[1];
Logger.log(res)

Ссылка:

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