Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Парсю сайт http://dorogi-onf.ru/statistics/ / 8 сообщений из 8, страница 1 из 1
17.05.2018, 15:57
    #39646223
Rinka777
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
И вообще не понимаю как... Коллеги, подскажите что, плиз!
...
Рейтинг: 0 / 0
17.05.2018, 18:15
    #39646314
Rinka777
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
проблема добыть координаты. остальное все добыла
...
Рейтинг: 0 / 0
17.05.2018, 21:10
    #39646376
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
POST-запрос на https://dorogi-onf.ru/load_map/
В ответе JSON с координатами и адресами. Оно?
...
Рейтинг: 0 / 0
18.05.2018, 15:00
    #39646758
Тshаmil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
раз уж форум по js то решение тоже будет на js с использованием phantomjs
качаем и устанавливаем phantomjs http://phantomjs.org/download.html, что это такое и зачем оно нужно читаем на официальном сайте

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
var page = require('webpage').create();
var system = require('system');
var fs = require('fs');
var pathToCookie = 'cookie.txt';
var resources = [];
var args = system.args;
var region = 0;
var center = 0;

function parse(){
        var cookieString = fs.read(pathToCookie);
        var cookies = JSON.parse(cookieString);
        var data = "region_id=" + region + "&center=" + center + "&conditions=6,4,3,none";

        for(var i = 0; i < cookies.length; i++) {
            phantom.addCookie(cookies[i]);
            page.addCookie(cookies[i]);

            if (cookies[i].name == 'csrftoken') {
                page.customHeaders = {
                        "Host": "dorogi-onf.ru",
                        "Origin": "https://dorogi-onf.ru",
                        "X-CSRFToken": cookies[i].value,
                        "Accept": "application/json, text/javascript, */*; q=0.01",
                        "Referer": "https://dorogi-onf.ru/city/vladivostok/",
                        "X-Requested-With":"XMLHttpRequest"
                };
                //console.log(JSON.stringify(page.customHeaders));
            }
        }

        page.open('https://dorogi-onf.ru/load_map/', 'post', data, function (status) {

            if (status !== 'success') {
               console.log('unable to post');
            } else {
                var jsonSource = page.plainText;

                //сохраняем полученный результат в файл
                fs.write(region + '_' + center + '.json', jsonSource, 'w');
            }

            phantom.exit();
        });
}

if (args.length < 3) {
	console.log('need --region=83 argumen');
	console.log('need --center=29480 argumen');
	phantom.exit();
} else {
	var argRegion = args[1].split('=');
	var argCenter = args[2].split('=');
	region = argRegion[1];
	center = argCenter[1];

	console.log('Start parse region ' + region + ' with center ' + center);
}

//проверяем наличие файла с кукисами
if (fs.exists(pathToCookie)) {
	parse();
} else {
        //сохраняем кукисы в файл
	page.open('https://dorogi-onf.ru/city/vladivostok/', function (status) {
	   fs.write(pathToCookie, JSON.stringify(page.cookies), 'w');
	   parse();	
	});
}



скрипт запускается коммандой
Код: javascript
1.
phantomjs scrap.js --region=62 --center=22738


дальше можно напсать bash скрипт для виндоузятников батник, либо использовать скрипт в своей программе, значения аргументов можно брать отсюда http://joxi.ru/DrlzYZ4H4YNGz2
...
Рейтинг: 0 / 0
18.05.2018, 20:55
    #39646905
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
Тshаmilраз уж форум по js то решение тоже будет на js Точно-точно, был бы форум по пэхапэ - и решение было б на PHP + curl

Тshаmilзначения аргументов можно брать отсюда http://joxi.ru/DrlzYZ4H4YNGz2 Это для красноглазиков, наверно :-)
Вроде, аргументом URL странички передавать не особо сложно. Дополнительный запрос добавить.
Или, вообще, диалог запилить, с выбором из списка городов. Для эстетов.
...
Рейтинг: 0 / 0
20.05.2018, 20:12
    #39647298
Rinka777
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
Тshаmil,

неожиданно, но спасибо. так как java я не знаю. так, копипастю немного...

поскольку знаю базу, так все леплю из базы и в базу. собрала таблицу с регионами, с проблемами, с авторами.


парсила вот примерно так :


jsp=org.jsoup.Jsoup;

doc=jsp.parse(html);

els = doc.select('div.item a[href]');

var l=els.size();

for (var i=0;i<l;i++) {

var row = createRowCopy(getOutputRowMeta().size());
var idx = getInputRowMeta().size();

row[idx++]=els.get(i).attr("href");
row[idx++]=els.get(i).text();

putRow(row);
}



но что такое center и вот это "&conditions=6,4,3,none" не поняла.
...
Рейтинг: 0 / 0
20.05.2018, 22:57
    #39647323
Тshаmil
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
Rinka777Тshаmil,

неожиданно, но спасибо. так как java я не знаю. так, копипастю немного...

скрипт написан на JavaScript а не на java, Java и JavaScript это два принципиально разных языка программирования. У них только название похожи.

Rinka777поскольку знаю базу, так все леплю из базы и в базу. собрала таблицу с регионами, с проблемами, с авторами.


парсила вот примерно так :


jsp=org.jsoup.Jsoup;

doc=jsp.parse(html);

els = doc.select('div.item a[href]');

var l=els.size();

for (var i=0;i<l;i++) {

var row = createRowCopy(getOutputRowMeta().size());
var idx = getInputRowMeta().size();

row[idx++]=els.get(i).attr("href");
row[idx++]=els.get(i).text();

putRow(row);
}



но что такое center и вот это "&conditions=6,4,3,none" не поняла.
center судя по всему, это внутренняя id города, так как значение этого параметра встречается в адресной строке вот в таком виде conditions=6,4,3,none, а назвали его так, видимо потому что карту центрируют по координатам города. conditions=6,4,3,none это видимо какие то дополнительные настройки для карты, хотя по уровню разработки сайта, могу сказать, что они могут вообще ничего не значить, в любом случае запросы проходят и без этого параметра, так что его можно убрать.

для исследования запроса удобно пользоваться утилитами которые включены в chrome, например, что бы получить запрос в виду curl команды нужно открыть вкладку network, найти нужный запрос, правой кнопкой открыть контекстное меню, и скопировать команду
http://joxi.ru/eAOe3PQU40JV5m

получим:
Код: javascript
1.
curl 'https://dorogi-onf.ru/load_map/' -H 'Cookie: csrftoken=fyrnR74lnbuDv7xQc0IftpTdW6T79pmR6lCBkJnZ4MNQ60CNcy2XLD89pJ6gE0Zw; sessionid=ump61jniuyjzlqfh6n4b7yhe1sjzbchd; _ga=GA1.2.1190890184.1526579227; _ym_uid=1526579227412818819; _gid=GA1.2.2072520181.1526845330; _ym_visorc_42145814=w' -H 'Origin: https://dorogi-onf.ru' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: ru,en-US;q=0.9,en;q=0.8,uk;q=0.7' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Referer: https://dorogi-onf.ru/city/vladivostok/' -H 'X-CSRFToken: fyrnR74lnbuDv7xQc0IftpTdW6T79pmR6lCBkJnZ4MNQ60CNcy2XLD89pJ6gE0Zw' -H 'X-Requested-With: XMLHttpRequest' -H 'Connection: keep-alive' --data 'region_id=83&center=29480&conditions=6%2C4%2C3%2Cnone' --compressed



вот в параметре --data содержаться параметры запроса, можно попробовать убрать некоторые из них, и выполнить команду из консоли, если есть ответ, то можно проверить, насколько этот ответ зависит от передаваемых параметров... я убирал condition и даже region, в первом случае ответы был тем же, во втором случае, сайт отдал значительно больше данные чем для одного региона, возможно он отдал все данные в видимом квадрате карты, я это не проверял...
...
Рейтинг: 0 / 0
29.05.2018, 14:56
    #39651824
Rinka777
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсю сайт http://dorogi-onf.ru/statistics/
Тshаmil, спасибо!!! Распасила.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Парсю сайт http://dorogi-onf.ru/statistics/ / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]