Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Парсер информации с сайта на Js (https://javascript.ru/forum/misc/63544-parser-informacii-s-sajjta-na-js.html)

HacKMeDOTcom 14.06.2016 10:20

Парсер информации с сайта на Js
 
Привет.
Я полный нуб вообще в веб программировании и полез в node.js точно не поняв что это. У меня даже запустить его не получилось.
Дело в том что в node.js скрипт выполняется на стороне сервера,а мне нужно на стороне клиента.
var request = require("request"),
    cheerio = require("cheerio"),
    url = "http://www.wunderground.com/cgi-bin/findweather/getForecast?&query=" + 02888;
 
request(url, function (error, response, body) {
    if (!error) {
        var $ = cheerio.load(body),
            temperature = $('#temp').val();
 
        console.log("Температура " + temperature + " градусов по Фаренгейту.");
    } else {
        console.log("Произошла ошибка: " + error);
    }
});

Это скрипт на node.js, помогите пожалуйста написать такой же на яваскрипт.

tourniquet 14.06.2016 11:33

Это и есть JavaScript. NodeJS это не язык программирования. На счёт вашей проблемы, никто вам не поможет, так как вы даже не объяснили только что вам нужно.

HacKMeDOTcom 14.06.2016 11:44

tourniquet, мне нужно: я открываю ссылку и запускается (при нажатии на кнопку спарсить) скрипт, на моем компьютере, не на сервере

aklis 14.06.2016 13:25

Капец как информативно :D

Dilettante_Pro 14.06.2016 14:09

<!DOCTYPE html>
<html>
<head>
    <title>Parcing</title>
</head>
<script type="text/javascript">
    function getTemp() {
       var temperature = document.getElementById('temp').value;
       alert("Температура " + temperature + " градусов по Фаренгейту.");
    }
</script>
<body>
   Температура по Фаренгейту
   <input id = "temp" type="text" value='451' />
   <button onclick="getTemp();">Спарсить</button>
</body>
</html>

pureJS 14.06.2016 14:13

HacKMeDOTcom, если трудно через node.js, то проще всего это сделать через Google Apps Script, в котором можно через
var ответ = UrlFetchApp.fetch(ссылка, переменные);
получить содержимое любой страницы. Описание и примеры здесь:
https://developers.google.com/apps-s.../url-fetch-app

Если не хочешь через Google Apps Script, то можно через PHP, используя функцию "file_get_contents()". Подробности и примеры использования тут:
PHP file_get_contents()
Найти безплатный PHP-hosting можно через поисковый запрос "php domain free"
Поиск: "php domain free"
000webhost.com не советую, т.к. они удалили возможность обращения к чужим страницам.

Ну и третий способ - это новые возможности в JS - через Fetch API. Подробней о ней с примерами использования:
Fetch API
Метод fetch: замена XMLHttpRequest
Введение в fetch. Прощай, XMLHttpRequest!
Но только я не пользовался третьим способом ещё и не знаю, насколько он тебе подойдёт, если брать с чужих страниц содержимоое.

А вот 2 первых способа подойдут однозначно. При этом я советую это сделать через Google Apps Script. Его можно развернуть как WEB-приложение и обращаться потом как к простой странице, даже не включая JS в обозревателе сети - всё будет исполняться на серверах Google.

HacKMeDOTcom 14.06.2016 22:48

pureJS, И у вас основная моя проблема (изначальная), дело в том что fetch и xmlhttprequest я использовал, целый скрипт получилось написать, но это вообще предназначено для другого, для того чтобы взять информацию не со страницы, а с запроса, но спасибо.

HacKMeDOTcom 14.06.2016 22:50

Dilettante_Pro,
Не то что мне нужно, у меня используется парсинг с другой страницы.

HacKMeDOTcom 14.06.2016 22:52

pureJS,
С хостингом проблем не будет, если я начал только изучать JS, то в php я полный 0, можете ли вы мне дать исходный код простого парсера на php. Я так понял он будет исполняться на браузере пользователя, а не на сервере?

pureJS 14.06.2016 23:05

Цитата:

Сообщение от HacKMeDOTcom (Сообщение 419441)
pureJS, И у вас основная моя проблема (изначальная), дело в том что fetch и xmlhttprequest я использовал, целый скрипт получилось написать, но это вообще предназначено для другого, для того чтобы взять информацию не со страницы, а с запроса, но спасибо.


HacKMeDOTcom, я вижу, что ты даже не понимаешь, что когда ты хочешь взять данные со страницы, то это запрос к ней. При таких знаниях у тебя вряд ли получится сделать то, что ты хочешь. Прочитай хотя бы одну путёвую книгу про PHP (к примеру), иначе ты не осилишь это! Или найми кого-то - здесь есть раздел "Работа".

В своём ответе я написал целых 3 пути, два первых из которых на 100% верные!

Dilettante_Pro 15.06.2016 10:18

Цитата:

Сообщение от HacKMeDOTcom (Сообщение 419442)
Dilettante_Pro,
Не то что мне нужно, у меня используется парсинг с другой страницы.

В таком случае вам нужен бот
http://wiki.webimho.ru/%D0%BF%D0%BE%...B1%D0%BE%D1%82

HacKMeDOTcom 15.06.2016 12:19

pureJS,
<!DOCTYPE html>
<html>
<head>
<script>
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.open("GET","/temp/moskwa",false);
xmlhttp.send();
if(xmlhttp.status==200)
{
var str=xmlhttp.responseText;
var n=str.search("temp");
var final=str.substring(n+18,n+24);
var url = "/send/db/moskwa" + escape(final);
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
}
document.addEventListener("DOMContentLoaded", ready);
</script>
</head>

Вот написал, все равно не получается и дополнительно гугл хром блокирует xmlhttprequest


Часовой пояс GMT +3, время: 03:01.