아름다운 수프-아름다운 물건

BeautifulSoup 프로젝트의 시작점은 BeautifulSoup 객체입니다. BeautifulSoup 객체는 생성에 사용되는 입력 HTML / XML 문서를 나타냅니다.

Beautiful Soup에 대한 문자열 또는 파일 류 객체를 전달할 수 있습니다. 여기서 파일 (객체)은 컴퓨터 또는 웹 페이지에 로컬로 저장됩니다.

가장 일반적인 BeautifulSoup 개체는 다음과 같습니다.

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

객체가 같은지 비교

아름다운 수프에 따르면, 두 개의 탐색 가능한 문자열 또는 태그 객체는 동일한 HTML / XML 마크 업을 나타내는 경우 동일합니다.

이제 두 개의 <b> 태그가 "<b> Java </ b>"처럼 보이기 때문에 객체 트리의 다른 부분에 있더라도 동일하게 취급되는 아래 예를 살펴 보겠습니다.

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

그러나 두 변수가 동일한 객체를 참조하는지 확인하려면 다음을 사용할 수 있습니다.

>>> print(first_b is second_b)
False

아름다운 수프 개체 복사

태그 또는 NavigableString의 복사본을 만들려면 아래와 같이 copy.copy () 함수를 사용하십시오.

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

두 복사본 (원본과 복사본)에 동일한 마크 업이 포함되어 있지만 두 복사본은 동일한 객체를 나타내지 않습니다.

>>> print(soup.p == p_copy)
True
>>>
>>> print(soup.p is p_copy)
False
>>>

유일한 차이점은 extract ()가 호출 된 것처럼 복사본이 원본 Beautiful Soup 개체 트리에서 완전히 분리된다는 것입니다.

>>> print(p_copy.parent)
None

위의 동작은 같은 공간을 동시에 차지할 수없는 두 개의 서로 다른 태그 개체 때문입니다.