Güzel Çorba - Güzel Nesneler
Herhangi bir BeautifulSoup projesinin başlangıç noktası, BeautifulSoup nesnesidir. BeautifulSoup nesnesi, oluşturulması için kullanılan girdi HTML / XML belgesini temsil eder.
Beautiful Soup için bir dize veya dosya benzeri bir nesne iletebiliriz, burada dosyalar (nesneler) makinemizde yerel olarak depolanır veya bir web sayfası.
En yaygın BeautifulSoup Nesneleri şunlardır:
- Tag
- NavigableString
- BeautifulSoup
- Comment
Eşitlik için nesneleri karşılaştırma
Güzel çorbaya göre, aynı HTML / XML biçimlendirmesini temsil ediyorlarsa iki gezilebilir dize veya etiket nesnesi eşittir.
Şimdi, nesne ağacının farklı bölümlerinde yaşıyor olsalar bile, iki <b> etiketinin eşit kabul edildiği, çünkü ikisi de “<b> Java </b>” gibi göründükleri aşağıdaki örneğe bakalım.
>>> markup = "<p>Learn Python and <b>Java</b> and advanced <b>Java</b>! from Tutorialspoint</p>"
>>> soup = BeautifulSoup(markup, "html.parser")
>>> first_b, second_b = soup.find_all('b')
>>> print(first_b == second_b)
True
>>> print(first_b.previous_element == second_b.previous_element)
False
Ancak, iki değişkenin aynı nesnelere atıfta bulunup bulunmadığını kontrol etmek için aşağıdakileri kullanabilirsiniz use
>>> print(first_b is second_b)
False
Güzel Çorba nesnelerini kopyalama
Herhangi bir etiketin veya NavigableString'in bir kopyasını oluşturmak için, aşağıdaki gibi copy.copy () işlevini kullanın -
>>> import copy
>>> p_copy = copy.copy(soup.p)
>>> print(p_copy)
<p>Learn Python and <b>Java</b> and advanced <b>Java</b>! from Tutorialspoint</p>
>>>
İki kopya (orijinal ve kopyalanmış olan) aynı işaretlemeyi içerse de, ikisi aynı nesneyi temsil etmez -
>>> print(soup.p == p_copy)
True
>>>
>>> print(soup.p is p_copy)
False
>>>
Tek gerçek fark, kopyanın orijinal Beautiful Soup nesne ağacından tamamen ayrılmış olmasıdır, sanki üzerinde extract () çağrılmış gibi.
>>> print(p_copy.parent)
None
Yukarıdaki davranış, aynı anda aynı alanı işgal edemeyen iki farklı etiket nesnesine bağlıdır.