2013-07-05 16 views
6

Pytanie do ciebie tutaj, próbuję dodać atrybut do tagu tutaj, zastanawiając się, czy mogę użyć metody BeautifulSoup, lub powinienem użyć zwykłej manipulacji ciągiem.BeautifulSoup - dodanie atrybutu do tagu

Przykład prawdopodobnie zapewniłby to wyraźnie, ponieważ jest to dziwne wyjaśnienie.

Jak HTML kod wygląda teraz:

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

Jak chciałbym go szukać:

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

Dzięki za pomoc!

Odpowiedz

16

łatwe 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> 

Atrybuty można rozpatrywać jako słownika. Więc mamy {'value':'BC'}, i aby dodać wartość do słownika, po prostu robimy dict[key] = value

+0

Świetnie, dzięki! Kiedy mam cię tutaj, jeśli wziąłem stronę, przeszukałem ją dla tych właśnie prowincji, stworzyłem ich listę. Zauważyłem, że niektóre z nich są znacznikami, które chcę, a niektóre są "Nawigacyjnymi łańcuchami", które są "u" \ n "", z których nie mam pojęcia skąd pochodzą. Masz pomysł na pozbycie się ich? –

+1

@ KelanPoten-Coyle Prawdopodobnie możesz filtrować listę: '[i for i in thelist if i! = U '\ n']'. Lub coś podobnego. Lub może być konieczne sprecyzowanie wyszukiwania 'find_all' podczas pobierania prowincji (przypuszczam, że używasz find_all) – TerryA