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 중국어 웹사이트의 기타 관련 기사를 참조하세요!