2013-07-05 4 views
6

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

Пример, вероятно, сделает это понятным, поскольку это странное объяснение.

Как HTML код выглядит сейчас:

<option value="BC">BRITISH COLUMBIA</option> 

Как бы мне хотелось, чтобы это выглядело:

<option selected="" value="BC">BRITISH COLUMBIA</option> 

Спасибо за помощь!

ответ

16

Easy с BeautifulSoup :)

>>> from bs4 import BeautifulSoup 
>>> soup = BeautifulSoup('<option value="BC">BRITISH COLUMBIA</option>') 
>>> soup.find('option')['selected'] = '' 
>>> print soup 
<html><body><option selected="" value="BC">BRITISH COLUMBIA</option></body></html> 

Атрибуты можно рассматривать как словарь. Итак, у нас есть {'value':'BC'}, а чтобы добавить значение в словарь, мы просто сделаем dict[key] = value

+0

Отлично, спасибо! Пока я здесь, если бы я взял страницу, просматривал ее только для этих провинций, создал список из них. Я обнаружил, что некоторые из них являются тегами, которые я хочу, а некоторые - «Navigatable Strings», которые все являются «u» \ n », о которых я понятия не имею, откуда они пришли. Любая идея избавиться от них? –

+1

@ KelanPoten-Coyle Возможно, вы могли бы отфильтровать список: '[i для i в the_list, если i! = U '\ n']'. Или что-то подобное. Или вам может потребоваться указать ваш поиск 'find_all' при получении провинций (я предполагаю, что вы используете find_all) – TerryA

Смежные вопросы