>  기사  >  백엔드 개발  >  Beautiful Soup 모듈을 사용하여 콘텐츠를 수정하기 위한 Python 샘플 코드에 대한 자세한 설명

Beautiful Soup 모듈을 사용하여 콘텐츠를 수정하기 위한 Python 샘플 코드에 대한 자세한 설명

高洛峰
高洛峰원래의
2017-03-28 09:10:312666검색

Beautiful Soup은 HTML이나 XML 파일에서 데이터를 추출할 수 있는 Python 라이브러리입니다. 즐겨 사용하는 변환기를 통해 일반적인 방식으로 문서를 탐색하고 찾고 수정할 수 있습니다. 또한 HTML/XML 문서의 내용을 수정할 수도 있습니다. 이 글에서는 Python이 Beautiful Soup 모듈을 사용하여 내용을 수정하는 방법을 주로 소개합니다.

서문

실제로 Beautiful Soup 모듈은 검색 및 탐색 외에도 HTML/XML 문서의 내용을 수정할 수도 있습니다. 이는 태그 추가 또는 삭제, 태그 이름 수정, 태그 속성 값 변경, 텍스트 내용 수정 등이 가능함을 의미합니다. 이 기사에서는 Python이 Beautiful Soup 모듈을 사용하여 내용을 수정하는 방법을 자세히 소개합니다. 아래에서는 자세히 설명하지 않겠지만 자세한 소개를 살펴보겠습니다.

태그 수정

사용된 샘플 HTML 문서는 여전히 다음과 같습니다.

html_markup="""
 <p class="ecopyramid">
 <ul id="producers">
  <li class="producerlist">
  <p class="name">plants</p>
  <p class="number">100000</p>
  </li>
  <li class="producerlist">
  <p class="name">algae</p>
  <p class="number">100000</p>
  </li>
 </ul>
 </p>
 """

태그 이름 수정

soup = BeautifulSoup(html_markup,'lxml')
producer_entries = soup.ul
print producer_entries.name
producer_entries.name = "p"
print producer_entries.prettify()

태그 속성 값 수정

# 修改标签属性
# 更新标签现有的属性值
producer_entries['id'] = "producers_new_value"
print producer_entries.prettify()
# 标签添加新的属性值
producer_entries['class'] = "newclass"
print producer_entries.prettify()
# 删除标签属性值
del producer_entries['class']
print producer_entries.prettify()

새 태그 추가

new_tag 메소드를 사용하여 새 태그를 생성한 다음 append() , insert(), insert_after(), insert_before() 메서드를 사용하여 HTML 트리에 태그를 추가합니다.

예를 들어 위 HTML 문서의 ul 태그에 li 태그를 추가합니다. 먼저, 새로운 li 태그가 생성된 다음 HTML 트리 구조에 삽입됩니다. 그리고 li 태그에 해당 p 태그를 삽입합니다.

# 添加新的标签
# new_tag 生成一个 tag 对象
new_li_tag = soup.new_tag("li")
# 标签对象添加属性的方法
new_atag = soup.new_tag("a",href="www.example.com" rel="external nofollow" )
new_li_tag.attrs = {'class':'producerlist'}
soup = BeautifulSoup(html_markup,'lxml')
producer_entries = soup.ul
# 使用 append() 方法添加到末尾
producer_entries.append(new_li_tag)
print producer_entries.prettify()
# 生成两个 p 标签,将其插入到 li 标签中
new_p_name_tag = soup.new_tag("p")
new_p_name_tag['class'] = "name"
new_p_number_tag = soup.new_tag("p")
new_p_number_tag["class"] = "number"
# 使用 insert() 方法指定位置插入
new_li_tag.insert(0,new_p_name_tag)
new_li_tag.insert(1,new_p_number_tag)
print new_li_tag.prettify()

문자열 내용 수정

new_string() , append() , insert() 메서드를 사용하여 문자열 내용을 수정할 수 있습니다. .

# 修改字符串内容
# 使用 .string 属性修改字符串内容
new_p_name_tag.string = 'new_p_name'
# 使用 .append() 方法添加字符串内容
new_p_name_tag.append("producer")
# 使用 soup 对象的 new_string() 方法生成字符串
new_string_toappend = soup.new_string("producer")
new_p_name_tag.append(new_string_toappend)
# 使用insert() 方法插入
new_string_toinsert = soup.new_string("10000")
new_p_number_tag.insert(0,new_string_toinsert)
print producer_entries.prettify()

레이블 노드 삭제

Beautiful Soup 모듈은 노드를 삭제하는 decompose()extract() 메소드를 제공합니다. 노드를 삭제하는

decompose() 메소드는 현재 노드뿐만 아니라 모든 하위 노드도 삭제합니다.

extract() 메소드는 HTML 트리에서 노드나 문자열 내용을 삭제하는 데 사용됩니다.

# 删除节点
third_producer = soup.find_all("li")[2]
# 使用 decompose() 方法删除 p 节点
p_name = third_producer.p
p_name.decompose()
print third_producer.prettify()
# 使用 extract() 方法删除节点
third_producer_removed = third_producer.extract()
print soup.prettify()

태그 콘텐츠 삭제

태그에는 NavigableString 개체 또는 Tag 개체가 하위 노드로 포함될 수 있습니다. 이러한 모든 하위 노드를 제거하려면 clear() 메서드를 사용하세요. 이렇게 하면 태그에서 모든 .content가 제거됩니다.

다른 콘텐츠 수정 방법

위에서 언급한 방법 외에도 콘텐츠를 수정하는 다른 방법이 있습니다.

insert_after()insert_before() 방법

위의 두 가지 방법은 레이블이나 문자열 앞이나 뒤에 레이블이나 문자열을 삽입할 수 있습니다. 메서드는 NavigableString 개체 또는 Tag 개체 중 하나의 매개 변수만 허용할 수 있습니다.

replace_with() 메서드

이 메서드는 원래 태그나 문자열을 새 태그나 문자열 콘텐츠로 대체하고 태그나 문자열을 입력으로 받을 수 있습니다.

wrap()unwrap() 메서드

wrap() 메서드는 레이블이나 문자열을 다른 레이블로 래핑합니다.

unwrap() 방법은 wrap() 방법과 반대입니다.

아아아아

위 내용은 Beautiful Soup 모듈을 사용하여 콘텐츠를 수정하기 위한 Python 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.