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.