Возможна ли Webscraping без Node?

-7

В настоящее время у меня есть простая веб-страница, которая просто состоит из файла .js,.css.html. Я не хочу использовать какие-либо вещи Node.js.

Что касается этих ограничений, я хотел бы спросить, можно ли искать контент на внешних веб-страницах, используя javascript (например, запуск веб-работника в фоновом режиме).

Например, я хотел бы сделать:

Получить первую ссылку URL поиска картинок Google.

Редактировать:

Я сейчас попробовал, и это сработало найти, однако через 2 недели я получаю эту ошибку:

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса в.... (причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin).

есть идеи как это решить?

Вот ошибка, описанная firefox: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin

спросил(а) 2019-04-13T13:01:00+03:00 1 год, 2 месяца назад
0
66

Да, это возможно Просто используйте API XMLHttpRequest:

var request = new XMLHttpRequest();
request.open("GET", "https://bypasscors.herokuapp.com/api/?url=" + encodeURIComponent("https://duckduckgo.com/html/?q=stack+overflow"), true); // last parameter must be true
request.responseType = "document";
request.onload = function (e) {
if (request.readyState === 4) {
if (request.status === 200) {
var a = request.responseXML.querySelector("div.result:nth-child(1) > div:nth-child(1) > h2:nth-child(1) > a:nth-child(1)");
console.log(a.href);
document.body.appendChild(a);
} else {
console.error(request.status, request.statusText);
}
}
};
request.onerror = function (e) {
console.error(request.status, request.statusText);
};
request.send(null); // not a POST request, so don't send extra data

Обратите внимание, что мне пришлось использовать прокси для обхода проблем с CORS; если вы хотите сделать это, запустите свой собственный прокси на вашем собственном сервере.

ответил(а) 2019-04-13T13:28:00+03:00 1 год, 2 месяца назад
66

Да, теоретически возможно выполнить "очистку веб-страниц" (т.е. анализ веб-страниц) на клиенте. Однако есть несколько ограничений, и я хотел бы спросить, почему вы не выбрали бы программу, которая работает на сервере или на рабочем столе.

Веб-работники могут запрашивать контент HTML с помощью XMLHttpRequest, а затем программно анализировать входящий XML. Обратите внимание, что целевая веб-страница должна отправлять соответствующие заголовки CORS, если она принадлежит чужому домену. Затем вы можете выбрать контент из полученного HTML.

Разбор контента, созданного с помощью CSS и JavaScript, будет сложнее. Вам нужно будет либо создать содержимое изолированной среды на странице вашего хоста из входного потока, либо запустить какой-то синтаксический анализатор, что кажется не очень возможным.

Короче говоря, ответ на ваш вопрос - "да", потому что у вас есть инструменты для выполнения сетевого запроса и полный язык Тьюринга, с помощью которого можно создавать любые виды анализа и очистки, которые вам нужны. Так что технически все возможно.

Но реальный вопрос: будет ли это мудрым? Вы когда-нибудь выбрали бы этот подход, когда другие технологии под рукой? Ну нет. В большинстве случаев я не понимаю, почему вы просто не написали бы программу на стороне сервера, используя, например, безголовый Chrome.

Если вы не хотите использовать Node - или по какой-то причине не можете развернуть Node - существует множество пакетов веб-очистки и предшествующего уровня техники на таких языках, как Go, C, Java и Python. Ищите менеджер пакетов вашего предпочтительного языка программирования, и вы, вероятно, найдете несколько.

ответил(а) 2019-04-13T13:11:00+03:00 1 год, 2 месяца назад
39

Я тоже слышал про python для списания, но nodejs + puppeteer надрывают задницу... И это довольно легко выучить

ответил(а) 2019-04-13T14:45:00+03:00 1 год, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема