@Ibishka

Как парсить элемент из другого сайта?

let xhr = new XMLHttpRequest();
  xhr.open("GET", "https://ipinfo.io");
  xhr.send();
  xhr.addEventListener("load", function() {
    if (xhr.status != 200) {
      alert(`Ошибка ${xhr.status}: ${xhr.statusText}`);
    } else {
      alert(xhr.response);
    }
  });


Мне нужно достать содержимое элемента document.querySelectorAll("json-widget-entry")[3];
  • Вопрос задан
  • 460 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Незачем что-то парсить. ipinfo.io предоставляет API, есть бесплатный план (до 50 тыс. запросов в месяц)

Например, с помощью jQuery, без авторизации можно получить IP, страну:
$.get("https://ipinfo.io", function(response) {
  console.log(response.ip, response.country);
}, "jsonp")


Response содержит больше полей:
{
  "ip": "134.209.xxx.xxx",
  "city": "Clifton",
  "region": "New Jersey",
  "country": "US",
  "loc": "40.8344,-74.1377",
  "org": "AS14061 DigitalOcean, LLC",
  "postal": "07014",
  "timezone": "America/New_York",
  "readme": "https://ipinfo.io/missingauth"
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
Так должно работать:
let xhr = new XMLHttpRequest();
xhr.open("GET", "https://ipinfo.io");
xhr.send();
xhr.addEventListener("load", function() {
	if (xhr.status != 200) {
		alert(`Ошибка ${xhr.status}: ${xhr.statusText}`);
	} else {
		let rawHTML = xhr.response;
		let parsedDOM = new DOMParser().parseFromString(rawHTML, 'text/html').documentElement.childNodes[2]; // получаем сразу body
		console.log(parsedDOM.querySelectorAll(".json-widget-entry")[3]); // поиск внутри тега body
	}
});

З.ы. возможно вы не сможете достучаться до нужного вам элемента, т.к. просто напросто в результате xhr его может и не быть
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы