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

Я борюсь с синтаксисом, необходимым для захвата некоторых 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') .

  • Tried Python BeautifulSoup и Phantom JS: STILL не может очищать веб-сайты
  • BeautifulSoup - значения атрибутов извлечения
  • Подстраницы BeautifulSoup списка с надписью «load more» pagination
  • Python: BeautifulSoup извлекает текст из тега привязки
  • Обработка индийских языков в BeautifulSoup
  • Предотвращение использования BeautifulSoup для преобразования моих тегов XML в нижний регистр
  • Использование BeautifulSoup для поиска html для строки
  • Beautifulsoup - Как открыть изображения и скачать их
  • Как вытащить атрибуты CSS из встроенных стилей с помощью BeautifulSoup
  • настроить BeautifulSoup's prettify по тегу
  • Есть ли чистый способ получить n-й столбец таблицы html с помощью BeautifulSoup?
  • Python - лучший язык программирования в мире.