Как найти блок
Перейти к содержимому

Как найти блок

  • автор:

Как найти блок div по тексту в Python?

Доброго времени суток!
Пытаюсь парсить html страницу на Python с помощью библиотеки BeautifulSoup. Есть ли в этой библиотеке метод для нахождения блока div по тексту который где-то внутри него находится?

  • Вопрос задан более трёх лет назад
  • 772 просмотра

Комментировать

Решения вопроса 0

Ответы на вопрос 3

Rinz

Программист на С++,PHP,C#,Java,Lisp,Smaltak,Python

Странно что используете такую древнюю либу, она последний раз обновлялась 4 года назад..
Но исходя из доков и кода на гитхабе можно использовать DOM.find(name=»div»,text=»TEXT») .
Если разработчик недопустил ошибок то должно отработать верно

Ответ написан более трёх лет назад

Как найти блок

Не могу понять, как правильно найти блок content .

 

При нажатии, выполняется закрытие окна и по сути, выполняется метод 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.
  1. В ответ на интересующие нас действия блок b1 эмитит событие.
  2. Блок-родитель подписывается на событие b1 и инициализируется при наступлении этого события. В момент своей инициализации находит внутри себя блок b2 и кеширует его, чтобы лишний раз не обращаться к DOM-дереву.
  3. При наступлении события из 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
поставить галки «поиск в атрибутах блоков», «целое слово»
нажать кнопку снизу «найти»
автокад выдаст панель «найдено х совпадений». панель закрыть.
в окне команды так же выдастся весь список найденного. Нажатием на заголовок столбца найденное сортируется. Справа от окна три кнопки (зум на объект, выделить выбранные в окне команды, выделить все найденные). И дальше делаете что вам там нужно с ними делать.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *