Модульные веб-приложения

Большинство ссылок на YouTube находятся в iframe, и javascript также должен работать. Попробуйте использовать селен. Следующее извлекает любые src или href, содержащие youtub e. Я только ввожу ключевой iframe хостинг клипа YouTube. Вы можете зациклить все проверки iframes.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def addItems(links, final):
    for link in links:
        ref = link.get_attribute('src') if link.get_attribute('src') is not None else link.get_attribute('href')
        final.append(ref)
    return final

url = "https://www.electronic-festivals.com/event/i-am-hardstyle-germany" 
driver = webdriver.Chrome()
driver.get(url)
driver.switch_to.frame(driver.find_element_by_css_selector('.media-youtube-player'))
final = []

try:
    links = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "[href*=youtube] , [src*=youtube]")))
    addItems(links, final)
except:
    pass
finally:
    driver.switch_to.default_content()

links = driver.find_elements_by_css_selector('[href*=youtube] , [src*=youtube]')
addItems(links, final)

for link in set(final):
    print(link)

driver.quit()
31
задан 24 September 2008 в 10:09
поделиться

8 ответов

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

Мы не используем JSF (Spring MVC здесь), таким образом, я не могу прокомментировать добавленную сложность той платформы в контексте OSGi.

Большинство платформ или подходов там все еще придерживаются "старого" образа мыслей: один ВОЕННЫЙ файл, представляющий Ваше веб-приложение и затем много пакетов OSGi и сервисов, но почти ни один не интересуется модуляризацией самого GUI.

Предпосылки для Дизайна

С OSGi первый вопрос решить: каков Ваш сценарий развертывания и кто основной контейнер? То, что я имею в виду, - то, что можно развернуть приложение на времени выполнения OSGi и использовать его инфраструктуру для всего. С другой стороны, можно встроить время выполнения OSGi в сервер традиционного приложения, и затем необходимо будет снова использовать некоторую инфраструктуру, конкретно Вы хотите использовать механизм сервлета AppServer.

Наш дизайн в настоящее время основан на OSGi как на контейнере, и мы используем HTTPService, предлагаемый OSGi как наш контейнер сервлета. Мы изучаем обеспечение своего рода прозрачного моста между внешним контейнером сервлета и OSGi HTTPService, но та работа продолжается.

Архитектурный Эскиз Spring MVC + OSGi модульное веб-приложение

, Таким образом, цель не состоит в том, чтобы просто вручить веб-приложение по OSGi, но также применять компонентную модель OSGI к самому веб-UI, делать это компонуемым, допускающим повторное использование, динамичным.

Это компоненты в системе:

  • 1 центральный пакет, который заботится об образующем мост Spring MVC с OSGi, конкретно это использует код Bernd Kolb , чтобы позволить Вам регистрировать Spring DispatcherServlet в OSGi как сервлет.
  • 1 пользовательский Картопостроитель URL, который введен в DispatcherServlet и это обеспечивает отображение входящих Запросов HTTP к корректному контроллеру.
  • 1 центральный основанный на Sitemesh декоратор JSP, который определяет глобальное расположение сайта, а также центральные библиотеки CSS и Javascript, которые мы хотим предложить как значения по умолчанию.
  • Каждый пакет, который хочет внести страницы в наш веб-UI, должен опубликовать 1 или более Контроллеров как OSGi Services и удостовериться к [1 123], регистрируют ее собственный сервлет и ее собственные ресурсы (CSS, JSP, изображения, и т.д.) с OSGi HTTPService. Регистрация сделана с HTTPService, и ключевые методы:

    httpService.registerResources () и httpService.registerServlet ()

, Когда сеть ui вносящий пакет активирует и публикует свои контроллеры, они автоматически взяты нашей центральной сетью ui пакет, и вышеупомянутый пользовательский Картопостроитель URL собирает эти сервисы Контроллера и сохраняет актуальную карту URL к Экземплярам контроллера.

Затем, когда Запрос HTTP наталкивается на определенный URL, он находит связанный контроллер и диспетчеризирует запрос туда.

Контроллер ведет свой бизнес и затем возвращает любые данные, которые должны быть представлены и название представления (JSP в нашем случае). Этот JSP расположен в пакете Контроллера и может быть получен доступ и представлен центральной сетью ui пакетом точно, потому что мы пошли и зарегистрировали местоположение ресурса в HTTPService. Наш центральный сопоставитель представления затем объединяет этот JSP с нашим центральным декоратором Sitemesh и выкладывает получающийся HTML клиенту.

В знают, что это - довольно высокий уровень, но не обеспечивая полноценное внедрение трудно полностью объяснить.

Наша ключевая точка изучения для этого должна была посмотреть , что Bernd Kolb сделал с его примером преобразование JPetstore в OSGi и использовать ту информацию для разработки нашей собственной архитектуры.

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

36
ответ дан 27 November 2019 в 22:34
поделиться

Интересный набор сообщений. У меня есть веб-приложение, которое настраивается на на клиентское основание. Каждый клиент получает базовый набор компонентов и дополнительных компонентов в зависимости от того, в чем они зарегистрировались. Для каждого выпуска мы должны 'собрать' корректный набор сервисов и применить корректную конфигурацию меню (мы используем меню распорок) на основе клиента, который утомителен по меньшей мере. В основном это - та же кодовая база, но мы просто настраиваем навигацию, чтобы выставить или скрыть определенные страницы. Это, очевидно, не идеально, и мы хотели бы усилить OSGi для разбиения на компоненты сервисов. В то время как я вижу, как это сделано для сервисных API, и вид понимают, как ресурсы как CSS и сценарий Java и контроллеры (мы используем Spring MVC) могли также быть связаны, как Вы пойдете о контакте с 'крестом, сокращающим' проблемы как навигация страницы и общий поток операций особенно в сценарии, где Вы хотите динамично развернуть новый сервис и должны добавить навигацию к тому сервису. Может также быть другой 'крест, сокращающий' проблемы как сервисы, которые охватывают другие из других сервисов. Спасибо, Declan.

0
ответ дан 27 November 2019 в 22:34
поделиться

Выезд сервер SpringSource dm - сервер приложений, созданный полностью с точки зрения OSGi и поддержки модульных веб-приложений. Это доступно в бесплатных, и коммерческих версиях с открытым исходным кодом.

можно запустить путем развертывания стандартного ВОЕННОГО файла и затем постепенно повредить приложение в модули OSGi, или 'пакеты' в OSGi-говорят. Как Вы могли бы ожидать SpringSource, сервер имеет превосходную поддержку платформы Spring и связанных продуктов портфеля Spring.

Правовая оговорка: Я работаю над этим продуктом.

2
ответ дан 27 November 2019 в 22:34
поделиться

Мы использовали Restlet с OSGi успешно со встроенными услугами Http (под покрытиями, это - на самом деле Причал, но кот доступен также).

Restlet имеет нуль к минимальным потребностям конфигурации XML, и любая конфигурация, которую мы реализовываем, находится в BundleActivator (регистрирующий новые сервисы).

При создании страницы, мы просто обрабатываем соответствующие реализации услуги для генерации вывода, стиля декоратора. Новые включаемые пакеты добавят новую страницу, decorations/widgets в следующий раз его представленный.

REST дает нам хорошие чистые и значимые URL, несколько представлений тех же данных, и кажется расширяемой метафорой (немного глаголов, много существительных).

бонусом А для нас была обширная поддержка кэширования, конкретно Завершающий тег.

1
ответ дан 27 November 2019 в 22:34
поделиться

Смотрите на http://www.ztemplates.org , который прост и легок для изучения. Этот позволяет Вам помещать все связанные шаблоны, JavaScript и CSS в одну банку и использовать его прозрачно. Средство, о котором Вы даже не должны заботиться об объявлении необходимого JavaScript на Вашей странице при использовании обеспеченного компонента как платформа, делает это для Вас.

0
ответ дан 27 November 2019 в 22:34
поделиться

Взгляните на РЭП! http://www.eclipse.org/rap/

0
ответ дан 27 November 2019 в 22:34
поделиться

Обратите внимание на лицензирование сервера Spring DM .

2
ответ дан 27 November 2019 в 22:34
поделиться

SpringSource seems to be working on an interesting modular web framework built on top of OSGi called SpringSource Slices. More information can be found in the following blog posts:

1
ответ дан 27 November 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: