Как найти блок div по тексту в Python?
Доброго времени суток!
Пытаюсь парсить html страницу на Python с помощью библиотеки BeautifulSoup. Есть ли в этой библиотеке метод для нахождения блока div по тексту который где-то внутри него находится?
- Вопрос задан более трёх лет назад
- 772 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 3
Программист на С++,PHP,C#,Java,Lisp,Smaltak,Python
Странно что используете такую древнюю либу, она последний раз обновлялась 4 года назад..
Но исходя из доков и кода на гитхабе можно использовать DOM.find(name=»div»,text=»TEXT») .
Если разработчик недопустил ошибок то должно отработать верно
Ответ написан более трёх лет назад
Как найти блок
Не могу понять, как правильно найти блок content .
,"app":>" role="button">То есть, у нас вызвалось модальное окно, в нём есть метод: modal_has-close и внутри модалки, есть кнопка - button, к которой примексован блок 'app'.При нажатии, выполняется закрытие окна и по сути, выполняется метод app:
modules.define( 'app', ['i-bem__dom', 'location', 'jquery', 'control', 'CryptoJSAes'], function(provide, BEMDOM, location, $, Control, CryptoJSAes) < provide(BEMDOM.decl(< block : this.name, baseBlock : Control >, < onSetMod: < 'js' : < 'inited' : function() < this._content = this.findBlockOutside('content'); this.bindTo('pointerclick', this._onAppLoad); >> >, _onAppLoad: function() < this._content._onGetLoad(); >, >)); > );
То есть, при клике на примексованный app к кнопке, выполняется функция _onAppLoad. В inited ищеться блок ‘content’ и выполняется функция _onGetLoad. findBlockOutside, не выполниться, в сферу того, что ‘content’ изнутри блока app, но изнутри app у нас modal только. Идёт вопрос, как найти блок ‘content’ и выполнить исходя из найденного блока — функцию?
Комментарии: 2
7 years agoНашёл только 1 способ, это $(‘.content’).bem(‘content’). Я так понимаю, инных способом нету?
7 years ago
Искать блоки вверх по дереву — в любом случае плохой паттерн.
Более надежная схема выглядит так: Предположим, что у нас такая разметка (максимально упрощенно):
И нам необходимо при каких-то действиях с b1 вызывать некий метод на `b2.
- В ответ на интересующие нас действия блок b1 эмитит событие.
- Блок-родитель подписывается на событие b1 и инициализируется при наступлении этого события. В момент своей инициализации находит внутри себя блок b2 и кеширует его, чтобы лишний раз не обращаться к DOM-дереву.
- При наступлении события из b1 вызывает необходимый метод блока b2 .
Команды консоли/testforblock
Использование testforblock position: x y z> tileName: Block> [dataValue: int] Аргументы position: x y z Координаты местоположения блока. tileName: Block Идентификатор блока, подлежащего поиску. dataValue: int (необязательно) Данные блока. -1 — любой тип. Результат Не выполняется, если неверно указаны аргументы. Не выполняется, если указанный блок с указанными данными не найден на нужных координатах. В случае успеха возвращает успешное выполнение команды. Примеры Поиск любого вида шерсти на (0,64,0): testforblock 0 64 0 wool testforblock 0 64 0 wool -1 Поиск оранжевой шерсти на (0,64,0): testforblock 0 64 0 wool 1
Как найти блок по имени?
Пробую найти блок по ранее присвоенным атрибутам, т.е. по имени. Через команду Find никак не выходит , пишет что ничего схожего с запросом не найдено.
Просмотров: 22884
Luca Brasi Посмотреть профиль Найти ещё сообщения от Luca Brasi LISP, C# (ACAD 200[9,12,13,14])
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,810
Так по ранее присвоенным атрибутам, по значениям этих атрибутов или по имени?__________________
Моя библиотека lisp-функций
—
Обращение ко мне — на «ты».
Все, что сказано — личное мнение.
Кулик Алексей aka kpblc Посмотреть профиль Посетить домашнюю страницу Кулик Алексей aka kpblc Найти ещё сообщения от Кулик Алексей aka kpblc Регистрация: 08.10.2005
Ukraine, L’viv
Сообщений: 822Если по имени блока, то можно с помощью:
1. Quick select
2. Object type: Block Referense
3. Properties: Name__________________
Nothing will stop an idea whose time has come
Регистрация: 18.05.2011
Сообщений: 8
по имени, вариант через быстрое выделение подходит . Спасибо!
Luca Brasi Посмотреть профиль Найти ещё сообщения от Luca Brasi Регистрация: 02.06.2009
Сообщений: 283А если есть ряд блоков (маркировки) оборудования. Их к примеру 300 шт. Хочу я найти блок 14. И найдет мне КАД 14, 140, 141, 140. и т. д. Возможно ли сделать такое, и если не штатными средстами, то хоть направте в правильное направление.
__________________
AutoCAD 2011.
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588Быстрый выбор, имя блока можно задавать регулярными возражениями. Хотя это странно, что у Вас при выборе блока с именем 14, выбираются и все остальные
Регистрация: 17.10.2009
Сообщений: 1,108
Сообщение от ВовочкаА если есть ряд блоков (маркировки) оборудования. Их к примеру 300 шт. Хочу я найти блок 14. И найдет мне КАД 14, 140, 141, 140. и т. д.
А вы попробуйте сначала. Вдрукъ не найдет.
Регистрация: 02.06.2009
Сообщений: 283Прошу прощения, неправильно поставил задачу. Есть блок с именем «POSI0519». У него есть атрибут «Маркировка». Соответственно на технологической схеме есть 428 обозначений с рядом атрибутов «1. 428». Схема не моя, значит, где какая позиция я не знаю. Нужно быстро найти позицию «14». Через быстрый поиск, значение атрибута я не нашел, даже если и найду, то данный элемент выбирает, но нужно что-бы зуммировало, или как то по иному определяло местоположение. Через поиск и замену находит «4, 140, 141, 140». Думаю, теперь вопрос поставлен точно
__________________
AutoCAD 2011.
Регистрация: 17.10.2009
Сообщений: 1,108
Сообщение от ВовочкаПрошу прощения, неправильно поставил задачу. Есть блок с именем «POSI0519». У него есть атрибут «Маркировка». Соответственно на технологической схеме есть 428 обозначений с рядом атрибутов «1. 428». Схема не моя, значит, где какая позиция я не знаю. Нужно быстро найти позицию «14». Через быстрый поиск, значение атрибута я не нашел, даже если и найду, то данный элемент выбирает, но нужно что-бы зуммировало, или как то по иному определяло местоположение. Через поиск и замену находит «4, 140, 141, 140». Думаю, теперь вопрос поставлен точно
_find
поставить галки «поиск в атрибутах блоков», «целое слово»
нажать кнопку снизу «найти»
автокад выдаст панель «найдено х совпадений». панель закрыть.
в окне команды так же выдастся весь список найденного. Нажатием на заголовок столбца найденное сортируется. Справа от окна три кнопки (зум на объект, выделить выбранные в окне команды, выделить все найденные). И дальше делаете что вам там нужно с ними делать.