forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   URL в теле страницы (http://forum.boolean.name/showthread.php?t=17068)

impersonalis 24.07.2012 17:21

Ответ: URL в теле страницы
 
Цитата:

Сообщение от MoKa (Сообщение 234083)
Далее рано или поздно будет (не обязательно кстати) "href="

поподробнее?

ABTOMAT 24.07.2012 17:33

Ответ: URL в теле страницы
 
Атрибута href может и не оказаться у элемента a.
Вообще элемент - это
PHP код:

<название_элемента атрибут1="значение" атрибут2="значение" ... атрибутN="значение">тело</название_элемента

В-общем, тот же XML.
Ещё может быть самозакрывающийся вариант
PHP код:

<название_элемента атрибуты /> 

Но он к a не относится.

Вообще по сути можно юзать парсер XML для этой цели, но помни, что какие только Васи Пупкины не пишут в Интернете. Поэтому готовься к незакрытым тегам, значениям атрибутов без кавычек и т.д.
Именно поэтому я бы советовал использовать (если это возможно) бравузер+javascript+jQuery, т.к. парсер DOM браузера уже готов к таким сюрпризам. Не надо за него изобретать велосипед.

Вообще если не секрет какое назначение программы? "На один раз"? Дистрибьюция?

impersonalis 24.07.2012 18:00

Ответ: URL в теле страницы
 
Цитата:

Сообщение от ABTOMAT (Сообщение 234108)
Вообще если не секрет какое назначение программы? "На один раз"? Дистрибьюция?

Пишу пока чисто для себя. В прошлом несколько раз приходилось писать такие приложения, но там я примерно представлял как выглядит ссылка и её окружение (писалось для взаимодействия с конкретным сайтом). Писалось "на один раз": повзаимодействоали n часов - и достаточно. Потому писалось весьма хардкодно.
Хотелось бы на потенциальное будущее иметь возможность пропарсить страницу на ссылки, а затем отобрать нужные по маске или регэкспом.
Вот.
Но, видать, овчинка выделки не стоит.

moka 24.07.2012 18:31

Ответ: URL в теле страницы
 
Если научишься пользоваться JS, то есть такая клёвая штука как Scratchpad в Firefox.
Там можно открыть просто страницу, открыть Scratchpad, и туда вбить какой-то скрипт, и запустить его. Таким образом он будет выполнен, без необходимости менять реальный код страницы, и вообще никто об этом не узнает, и не нужно использовать посторонних инструментов.
Данные и результаты можно от туда же выводить в консоль, или вообще кодом создать модальный элемент и туда вставить данные результат твоих махинаций, если таковые имеются.

ABTOMAT 24.07.2012 18:42

Ответ: URL в теле страницы
 
Можно также и в консоль FireBug'а

impersonalis 24.07.2012 18:49

Ответ: URL в теле страницы
 
Спасибо, но предполагалось это сделать на цпп без привлечения большого числа инструментов, тем более сторонних приложений.
Ну варианты ясны - спасибо за обзор возможностей.

Randomize 24.07.2012 18:55

Ответ: URL в теле страницы
 
Кстати да, xml же:
http://www.sourceforge.net/projects/tinyxml

ABTOMAT 24.07.2012 18:57

Ответ: URL в теле страницы
 
Импер, правой кнопкой в любом месте страницы (я знаю, ты Оператор)
Проинспектировать элемент
Справа выбери вкладку "Консоль"
Вставляй туда вот это:
PHP код:

var obj=document.body.getElementsByTagName("a");for(var i=0;i<obj.length;i++) {if(obj[i].getAttribute('href')) {console.log(obj[i].getAttribute('href'));}} 

Энтер

Всё. Надо ли тебе теперь изобретать велосипед - решай сам.

moka 24.07.2012 19:27

Ответ: URL в теле страницы
 
Привлечение cpp - это уже огромный геморой с точки зрения web'а, когда в броузерах всё есть, просто заюзать нужно.

Randomize 24.07.2012 19:42

Ответ: URL в теле страницы
 
да хз. Если есть регулярки том в чём угодно можно отпарсить что угодно. Импэ, ты скажи от начала до конца что ты хочешь сотворить.

Собрать со страницы все href и названия ссылок?
тогда:
1) сокетное соединение (загаловки нагуглишь)
2) отрезаешь заголовок ответа ну иконвертишь там в нужную тебе кодировку
3) регуляришь текст

moka 24.07.2012 20:34

Ответ: URL в теле страницы
 
Цитата:

Сообщение от Randomize (Сообщение 234135)
да хз. Если есть регулярки том в чём угодно можно отпарсить что угодно. Импэ, ты скажи от начала до конца что ты хочешь сотворить.

Собрать со страницы все href и названия ссылок?
тогда:
1) сокетное соединение (загаловки нагуглишь)
2) отрезаешь заголовок ответа ну иконвертишь там в нужную тебе кодировку
3) регуляришь текст

Если нужно оффлайн это сотворить, я бы взял node.js, и замутил за 5 минут всё что нужно. Там уже всё есть для этого, никаких не нужно заголовков откидывать, с кодировками гемора никакого, плюс регулярка из коробки тоже.
Намного проще воспользоваться node чем cpp.
Плюс если нужно будет перекочевать на js на front-end'е, код из node можно будет пере использовать.

Randomize 24.07.2012 21:12

Ответ: URL в теле страницы
 
Цитата:

Сообщение от MoKa (Сообщение 234141)
Если нужно оффлайн это сотворить, я бы взял node.js, и замутил за 5 минут всё что нужно.

Чё вы все со своим вебом то? А если импэ пишет софт, котрый показывает рекламу с некого сайта, то предлагаете полностью всю софтину на ноде переписать? Импэ сказал C++ значит C++.

moka 24.07.2012 21:21

Ответ: URL в теле страницы
 
node - это не веб лол.
Если взять за пример который ты предложил, как раз node - это ваще проще простого.

Тупо парсишь все баннеры и картинки, и через веб-сокет выдаёшь хтмл разметку уже с выдранными данными, не нужно качать картинки (ссылки и так прямые), и куча ещё плюшек.
Так что для таких задачь, node в разы круче и удобнее чем C++.

Автор топика не сказал о конкретных потребностях, но судя по тому что это "одноразовые" использования, и не публичный софт, то следственно скорее всего автор просто занимается добычей данных с сайтов, для этого node один из первых на данную роль. Следи за тем что творить в последнее время, и вижу у тебя баттхёрты в плане node'а, или то что я что-то предлагаю?

impersonalis 24.07.2012 21:24

Ответ: URL в теле страницы
 
Всем спасибо.

Randomize 24.07.2012 21:32

Ответ: URL в теле страницы
 
Цитата:

Сообщение от MoKa (Сообщение 234151)
Автор топика не сказал о конкретных потребностях, но судя по тому что это "одноразовые" использования, и не публичный софт, то следственно скорее всего автор просто занимается добычей данных с сайтов, для этого node один из первых на данную роль. Следи за тем что творить в последнее время, и вижу у тебя баттхёрты в плане node'а, или то что я что-то предлагаю?

Нет, просто ситуация выглядит так:

X: Здравствуйте, меня есть грузовик, как мне правильно перевезти шкаф?
Y: Я умею водить троллейбус, так что возьми троллейбус (Автомат и прочие с жикверями)
Z: Я умею водить трактор, возьми трактор (Мока с нодой)

Нет баттхёрта от ноды. Нода малаца. Просто пойми, я тут тоже мог предложить PHP или Ruby ну или Perl. А можно и линукс поставить с wget`oм и башем. Мог предложить даже WScript. Но всё это не верные пути. Я полагаю, что топик стартеру кроме парса страницы надо будет ещё что либо (например рендер шняги в Xors3D)


Часовой пояс GMT +4, время: 06:59.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot