2013-07-05 21 views
6

Domanda per te qui, sto cercando di aggiungere un attributo a un tag qui, chiedendomi se posso usare un metodo BeautifulSoup, o dovrei usare la semplice manipolazione delle stringhe.BeautifulSoup - aggiunta attributo al tag

Un esempio lo renderebbe chiaro, in quanto è una spiegazione strana.

Come il codice HTML appare ora:

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

come mi piacerebbe farlo sembrare:

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

Grazie per l'aiuto!

risposta

16

facile con 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> 

Gli attributi possono essere guardato come un dizionario. Quindi abbiamo {'value':'BC'} e per aggiungere un valore a un dizionario, facciamo semplicemente dict[key] = value

+0

Grande, grazie! Mentre ti ho qui, se ho preso una pagina, ho cercato per queste solo province, ne ho creato una lista. Sto scoprendo che alcuni di loro sono tag, che voglio, e alcuni sono "Navigatable Strings" che sono tutti "u" \ n "", di cui non ho idea da dove venissero. Qualche idea per sbarazzartene? –

+1

@ KelanPoten-Coyle Probabilmente potresti filtrare la lista: '[i for i in the_list if i! = U '\ n']'. O qualcosa di simile. Oppure, potrebbe essere necessario specificare la ricerca 'find_all' quando si ottengono le province (presumo che tu stia utilizzando find_all) – TerryA

Problemi correlati