Как получить вложенный элемент в прекрасный суп

Я борюсь с синтаксисом, необходимым для захвата некоторых hrefs в td. Элементы table, tr и td не имеют классов или идентификаторов.

Если бы я хотел захватить якорь в этом примере, что мне нужно?

<tr> <td> <a> …

благодаря

2 Solutions collect form web for “Как получить вложенный элемент в прекрасный суп”

В соответствии с документами вы сначала создаете дерево разбора:

import BeautifulSoup html = "<html><body><tr><td><a href='foo'/></td></tr></body></html>" soup = BeautifulSoup.BeautifulSoup(html) 

и затем вы выполняете поиск в нем, например, для тегов <a> чей непосредственный родитель является <td> :

 for ana in soup.findAll('a'): if ana.parent.name == 'td': print ana["href"] 

Что-то вроде этого?

 from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) anchors = [td.find('a') for td in soup.findAll('td')] 

Это должно найти первое «a» внутри каждого «td» в html, который вы предоставляете. Вы можете настроить td.find чтобы быть более конкретным, или использовать findAll если у вас есть несколько ссылок внутри каждого td.

Комментарий UPDATE: re Daniele, если вы хотите убедиться, что у вас нет никого в списке, вы можете изменить понимание списка таким образом:

 from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) anchors = [a for a in (td.find('a') for td in soup.findAll('td')) if a] 

Что в основном просто добавляет проверку, чтобы увидеть, есть ли у вас фактический элемент, возвращаемый td.find('a') .

  • Декодирование объектов HTML с помощью Python
  • Кодек Python ASCII не может кодировать ошибку символа во время записи в CSV
  • Извлечение таблиц с веб-страницы с помощью BeautifulSoup 4
  • Извлечение данных в таблице с помощью BeautifulSoup
  • Как отключить теги комментариев из HTML с помощью BeautifulSoup?
  • Извлечение текста из тега скрипта с помощью BeautifulSoup в Python
  • BeautifulSoup и lxml.html - что выбрать?
  • Форматирование текста в таблице на Python
  • Python - лучший язык программирования в мире.