2014-04-13 12 views
6

Hem python hem de beautifulsoup için yeniyim, bu yüzden bulamadığım basit bir cevap var. python beautifulsoup new_tag: bir özellik olarak sınıf atamak

ben de .new_tag('a', href='#', id='link1')

gibi özelliklerini atayabilirsiniz Ama kelime ayrılmıştır çünkü sınıf bu şekilde atayamazsınız .new_tag('name') diyoruz. Ayrıca, bu şekilde ad ekleyemiyorum çünkü etiket adı niteliği için anahtar kelime olarak kullanılıyor. Daha sonra bunları tag['class'] kullanarak ekleyebileceğimi biliyorum, ancak bilmek isterim, bu yeni etikete ders eklemenin tek yolu bu mu? Ya da tek bir adımla bunu yapmanın bir yolu var mı?

cevap

15

Haklısınız - sınıf bir python ayrılmış sözcüktür ve dil çözümleyicisi şikayet ettiğinden, bir anahtar kelime argümanı olarak kullanılamaz.

Bunun çevresinde bir yol var - fonksiyon anahtar sözcükleri argümanlarını ** tarafından öncelenen bir sözlük üzerinden verebilirsiniz. Bu şekilde "sınıf" sadece başka bir dizedir ve python sözdizimi ayrıştırıldığında ayrılmış sözcükle çarpışmaz, ancak anahtar kelime argümanı çalışma zamanında doğru şekilde iletilir.

+1

Evet, bu işleri); - geçici çözüm olmalı Senin durumunda

.. çirkin

soup.new_tag('a', href='#', id='link1', **{'class':'classname'}) 

Tür biliyorum ama işe yarar! Belki python hakkındaki bilgim çok zayıf, ama ben zaten böyle bir şekilde denedim, ama başarısız oldu. Kodunuz gayet iyi çalışıyor. Teşekkür ederim! –

+0

Rica ederim! yardımcı olduğuma sevindim ;) – itai