| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Извлечения URL из HTML |
| Автор: Хрипа 5.2.2008, 16:43 | ||
Допусти есть нечто подобное:
Как мне от сюда извлеч урлы ? все даже картинки |
| Автор: Ghirik 5.2.2008, 17:35 | ||
Я вот так извлекал в php:
В JavaScript, шаблон похожий... |
| Автор: Хрипа 5.2.2008, 18:46 |
| Ghirik, Дело в том что тут не совсем URL тут запись вида : ?type=town&name=%C4%EE%ED%E5%F6%EA&fi=2884&la=2264&code=6864&template=AviaTemplate&id=34519&req=findtown&town=Дон я не могу составить шаблон что бы подобное извлеч! |
| Автор: Хрипа 5.2.2008, 19:03 |
| type(.|")* type(.|>)* type(&|=|.)* ((?:?|&|=|.)*) Пробывал массу различных шаблонов но не как не подохит |
| Автор: Ghirik 5.2.2008, 19:27 |
| Ну а по кавычкам? href="......." Добавлено @ 19:30 Типа как то так: /http:\"\.*\"/gi |
| Автор: Dr.Zlo 5.2.2008, 19:32 | ||
Если я правильно понял задачу, то вот:
|
| Автор: Хрипа 5.2.2008, 19:33 |
| Ghirik, не выдерает в масив всё что между ковычек пробывал вот таким выражением: href="((?:.)*) Может что-то не так делаю помогите пожалуйста )) Добавлено через 1 минуту и 23 секунды Dr.Zlo, данный текст не есть Документом это большая строка полученная Ajax запросом Задача в том что бы пропарсить документ на ссылки Добавлено через 3 минуты и 46 секунд ссылки какого вида я привёл выше примером |
| Автор: Ghirik 5.2.2008, 19:38 | ||||
http://www.softtime.ru/info/articlephp.php?id_article=42, синтаксис посмотрите, там вроде всё есть...
Во первых, заднюю кавычку нужно обязательно показывать, во вторых, все спец символы нужно закрывать обратными слэшами. Добавлено через 1 минуту и 7 секунд
Нет, не правильно, там не URL-ы а билеберда всякая.... |
| Автор: Хрипа 5.2.2008, 19:41 | ||||
| Ghirik, href=\"((?:.)*)\" не работает Кстати я знаю примочки регулярных выражений в php уже бы довно получил данные между двумя тегами или ещё чего а вот в JS возвращает бпер какой-то!! Может кто-то пример кинет кто много работал с регами JS ? Добавлено @ 19:45 Ghirik, получается задача в том что бы извлеч все что между href="...." в массив или обьект что бы можно было работать с этим потом! Код:
На выходе:
Добавлено @ 19:50 Проблема в том что оно не извлекает а возвращает полный бред! PHP возврашает всё по шаблону в многомерный массив а тут непонятно что! |
| Автор: Ghirik 5.2.2008, 19:57 |
| А-а-а..... дак вам вообще не то нужно.... Добавлено через 52 секунды Счас сделаю..... |
| Автор: Хрипа 5.2.2008, 19:59 |
| Ghirik, Может поможите примером как это реализовуется на JS ? Того что я прочёл массу документации и так ничего не нашол. Добавлено через 3 минуты Спасибо |
| Автор: Ghirik 5.2.2008, 20:13 | ||
| Этож надо так тупить!!!!! Вот:
Добавлено через 2 минуты и 30 секунд В этом примере, вначале получаем массив элементов "<a></a>", а потом в цикле складываем атрибуты "href" в нужное место. |
| Автор: Хрипа 5.2.2008, 20:17 |
| Ghirik, не вы не поняли )) я Получил Ajax запросом страничку она хранится в переменной. а А это текст и в нём только регулярными выражениями работать! так то я получил бы и сам тут ничего трудного! ) А вот насчёт работы с регулярными выражениями ? П/С DOM не подходит! |
| Автор: Ghirik 5.2.2008, 20:24 | ||
Почему только регуляркой? Если у вас в переменной html, то можно через getElementsByTagName Вы дайте точное содержимое переменной, и станет всё понятно... не добавляя ни чего, голую строку... |
| Автор: Хрипа 5.2.2008, 20:30 | ||
Добавлено через 1 минуту имя переменной: Server.responseText; |
| Автор: Ghirik 5.2.2008, 20:32 | ||
Если вам вернулся ответ в переменную response, то так
можно достать все тэги "a" в массив "a" Добавлено через 8 минут и 54 секунды Хрипа, не понял, это Вы что выложили? Там нарушен формат html. Так и есть в оригинале? Если html нарушен, то может и кавычек не быть, значит ни каким регулярным выражением не достать. На сколько я помню в ajax-овском респонсе возвращается строковое значение. |
| Автор: Ghirik 5.2.2008, 20:47 |
| Я вставил вашу страницу в html-редактор, там во многих местах нет кавычек, поэтому веся разметка сбита. Это вы сами просто что-то вырезали, или такая страница и есть? |
| Автор: Хрипа 5.2.2008, 20:52 |
| Вот именно текстовое значения а не документ. Поэтому Всякие getElement не работают! Резать надо регами а я немогу нефига сделать! так как либо руки корявые либо нет документации нормальной, да и работает оно по странному да и вся документация на всех сайтах оденнаковая. Добавлено через 33 секунды Ghirik, http://avia.gismeteo.ru/avia.php?id=34519&town=%C4%EE&req=findtown Добавлено через 3 минуты и 35 секунд Мне надо выташить ссылки с http://avia.gismeteo.ru/avia.php?id=34519&town=%C4%EE&req=findtown которые в таблице Список ближайших аэропортов к городу: После чего бежать в цикле и выдерать по ним погоду! а я немогу не как получить ссылки так как регулярные выражения возвращают совсем не то! |
| Автор: Ghirik 5.2.2008, 20:56 |
| Ай да молодцы!!! счас попробую.... А ссылку лучше удалите..... |
| Автор: Хрипа 5.2.2008, 20:57 |
| Ghirik, обратится getElement тоже не работают, вторые сутки мучаюсь а толку 0. |
| Автор: Ghirik 5.2.2008, 20:58 |
| php точно нельзя применить? а то у меня есть готовое решение... |
| Автор: Хрипа 5.2.2008, 20:59 |
| Ghirik, на PHP вырезаю все в плоть до конкретного TD или DIV а мне надо Ajaxсом вырезать так как если из php то сервак меня банит а цеплять каждый раз прокси это долго! |
| Автор: Ghirik 5.2.2008, 21:05 |
| Так, всё сначала.... В переменной, AJAX-ответ. AJAX-ответ не содержит переводов строк(\n). Значит, у вас в переменной вся страница, только одной строкой. Правильно? |
| Автор: Хрипа 5.2.2008, 21:06 |
| Ghirik, содержит \n\r Добавлено через 1 минуту и 28 секунд Ghirik, вы то сами попробуйте. написать скрипт а то ешё больше времени потеряем и посматрите что и как ) если получится извлеч кинте пример буду век благодарен |
| Автор: Ghirik 5.2.2008, 21:09 |
| Ясно, буду пробовать, но это не быстро, потому, как сам плохло дружу с регуляркой. Но подобное делал, не могу найти тот файл с регуляркой, весь комп перерыл.... Думаю, через часок разберусь... |
| Автор: Хрипа 5.2.2008, 21:14 |
| Ghirik, тут проблема что регулярки JS работают фигово preg_match_all(); / возвращает все совпадения в масив а в js regexp.exec(); возврашает только то что попало под шаблон а не совпадения. Добавлено через 25 секунд Ghirik, буду очень благодарен если поможите разобратся что и как тут работает! |
| Автор: Ghirik 6.2.2008, 06:39 |
| Хрипа, я там черкнул на мыло (@mail.ru)... проверьте ящик, который здесь регистрировали... |
| Автор: ksnk 6.2.2008, 09:47 | ||
Хрипа, А вот такой пример вам не поможет?
|
| Автор: Ghirik 6.2.2008, 10:34 |
| Я сделал, письмом отправил.... выкладывать не хочу, чтоб народ не баловался. А кто соображает и сам сделает. ksnk, если интересно, могу дать ссылку в личке. Добавлено через 14 минут и 35 секунд На мой взгляд, нужно что то убирать из этой темы... либо ссылки, либо решение... лучше решение. Если автором задумывалось парсить именно этот сайт, то оставив ссылки можно дождаться появления новых механихмов защиты, какой ни будь периодической смены синтаксиса в параметрах. Да и вообще, не хорошо это... |
| Автор: Хрипа 7.2.2008, 10:01 |
| Ghirik, ksnk, Спасибо за помошь )) теперь обсалютно понятно как работать с exec аказуется надо вызывать пока оно что-то возвращает и в цикле смотреть данные )) большое спасибо! |