Python Beautiful Soup 모듈 을 이용 하여 대상 생 성 상세 설명
6432 단어 pythonbeautifulsoup 모듈대상
pip 를 통 해 Beautiful Soup 모듈 설치:
pip install beautifulsoup4
.또한 PyCharm IDE 를 사용 해 코드 를 쓸 수도 있 고,PyCharm 의 Preferences 에서 Project 를 찾 아 안에서 Beautiful Soup 모듈 을 검색 해 설치 하면 된다.
BeautifulSoup 대상 만 들 기
Beautiful Soup 모듈 은 웹 페이지 에서 데 이 터 를 얻 기 위해 광범 위 하 게 사용 된다.웹 페이지 의 모든 링크 나 탭 의 내용 등 HTML/XML 문서 에서 Beautiful Soup 모듈 을 사용 하여 모든 데 이 터 를 추출 할 수 있 습 니 다.
이 를 실현 하기 위해 뷰 티 풀 수프 는 다양한 대상 과 방법 을 제공한다.모든 HTML/XML 문 서 는 서로 다른 Beautiful Soup 대상 으로 바 뀔 수 있 습 니 다.이 대상 들 은 서로 다른 속성 과 방법 을 가지 고 있 습 니 다.우 리 는 그 중에서 필요 한 데 이 터 를 추출 할 수 있 습 니 다.
Beautiful Soup 에는 다음 과 같은 세 가지 대상 이 있 습 니 다.
Beautiful Soup 대상 을 만 드 는 것 은 모든 Beautiful Soup 프로젝트 의 출발점 입 니 다.
BeautifulSoup 은 기계 의 파일 이나 웹 페이지 와 같은 문자열 이나 클래스 파일 대상(file-like object)을 전송 할 수 있 습 니 다.
문자열 로 BeautifulSoup 대상 만 들 기
BeautifulSoup 의 구조 기 에서 문자열 을 전달 하여 대상 을 만 듭 니 다.
helloworld = '<p>Hello World</p>'
soup_string = BeautifulSoup(helloworld)
print soup_string
<html><body><p>Hello World</p></body></html>
클래스 파일 대상 을 통 해 BeautifulSoup 대상 만 들 기BeautifulSoup 의 구조 기 에서 클래스 파일 대상(file-like object)을 전달 하여 대상 을 만 듭 니 다.이것 은 온라인 홈 페이지 를 분석 할 때 매우 유용 하 다.
url = "http://www.glumes.com"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
print soup
클래스 파일 대상 을 전달 하 는 것 외 에 로 컬 파일 대상 을 BeautifulSoup 의 구조 기 에 전달 하여 대상 을 만 들 수 있 습 니 다.
with open('foo.html','r') as foo_file :
soup_foo = BeautifulSoup(foo_file)
print soup_foo
XML 분석 을 위 한 BeautifulSoup 대상 만 들 기Beautiful Soup 모듈 역시 XML 을 해석 할 수 있 습 니 다.
Beautiful Soup 대상 을 만 들 때 Beautiful Soup 모듈 은 HTML/XML 트 리 를 만 들 기 위해 적당 한 TreeBuilder 클래스 를 선택 합 니 다.기본적으로 HTML TreeBuilder 대상 을 선택 하면 기본 HTML 해상도 기 를 사용 하여 HTML 구조 트 리 를 만 듭 니 다.위의 코드 에서 문자열 로 BeautifulSoup 대상 을 만 드 는 것 은 HTML 트 리 구조 로 해석 하 는 것 입 니 다.
만약 우리 가 Beautiful Soup 모듈 에서 입력 한 내용 을 XML 형식 으로 해석 하려 면 Beautiful Soup 구조 기 에서 사용 할 features 인 자 를 정확하게 지정 해 야 합 니 다.특정한 features 인 자 를 통 해 Beautiful Soup 은 우리 가 원 하 는 특징 을 충족 시 키 기 위해 가장 적합 한 TreeBuilder 클래스 를 선택 할 것 입 니 다.
features 매개 변수 이해
모든 TreeBuilder 는 사용 하 는 해상도 에 따라 특징 이 다 를 것 입 니 다.따라서 입력 한 내용 은 구조 기 에 전 달 된 features 파라미터 에 따라 결과 가 다 를 수 있 습 니 다.
Beautiful Soup 모듈 에서 TreeBuilder 가 현재 사용 하고 있 는 분석 기 는 다음 과 같 습 니 다.
현재 모든 TreeBuilder 가 지원 하 는 features 파라미터 와 해석 기 는 다음 표 와 같 습 니 다.
Features
TreeBuilder
Parser
[‘lxml','html','fast','permissive']
LXMLTreeBuilder
lxml
[‘html','html5lib','permissive','strict','html5′]
HTML5TreeBuilder
html5lib
[‘html','strict','html.parser']
HTMLParserTreeBuilder
html.parser
[‘xml','lxml','permissive','fast']
LXMLTreeBuilderForXML
lxml
지정 한 feature 인자 에 따라 Beautiful Soup 은 가장 적합 한 TreeBuilder 클래스 를 선택 합 니 다.대응 하 는 해상도 기 를 지정 할 때 다음 과 같은 오류 메시지 가 나타 나 면 해당 하 는 해상도 기 를 설치 해 야 할 수도 있 습 니 다.
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html5lib.
Do you need to install a parser library?
HTML 문서 의 경우 TreeBuilder 를 선택 하 는 순 서 는 해상도 기 를 기반 으로 한 우선 순위 입 니 다.위 표 와 같은 우선 순위 입 니 다.먼저 lxml 이 고,그 다음은 html 5lib 이 며,마지막 은 html.parser 입 니 다.예 를 들 어 html 문자열 을 feature 매개 변수 로 선택 하면 lxml 해상도 기 를 사용 할 수 있 으 면 Beautiful Soup 모듈 은 LXMLtreeBuilder 를 선택 합 니 다.lxml 을 사용 할 수 없 으 면 html 5lib 해상도 기 에 따라 HTML 5TreeBuilder 를 선택 합 니 다.사용 할 수 없 으 면 html.parser 에 따라 HTML Parser TreeBuilder 를 선택 합 니 다.XML 에 대해 서 는 lxml 이 유일한 해석 기 이기 때문에 LXMLtreeBuilder ForXML 은 항상 선택 된다.
따라서 XML 에 Beautiful Soup 대상 을 만 드 는 코드 는 다음 과 같 습 니 다.
helloworld = '<p>Hello World</p>'
soup_string = BeautifulSoup(helloworld,features="xml")
print soup_string
입력 한 결과 도 XML 형식의 파일 입 니 다.Beautiful Soup 대상 을 만 들 때 더 좋 은 실천 은 지정 해상도 입 니 다.이것 은 서로 다른 해석 기 가 해석 한 결과 내용 이 크게 다 르 기 때문이다.특히 우리 의 HTML 문서 내용 이 불법 일 때 결과 가 더욱 뚜렷 하기 때문이다.
우리 가 BeautifulSoup 대상 을 만 들 었 을 때 Tag 와 NavigableString 대상 도 만 들 었 습 니 다.
태그 개체 만 들 기
우 리 는 BeautifulSoup 대상 에서 Tag 대상,즉 HTML/XML 의 라벨 을 얻 을 수 있다.
다음 HTML 코드 와 같 습 니 다.
#!/usr/bin/python
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
html_atag = """
<html>
<body>
<p>Test html a tag example</p>
<a href="http://www.glumes.com'>Home</a>
<a href="http;//www.glumes.com/index.html'>Blog</a>
</body>
<html>
"""
soup = BeautifulSoup(html_atag,'html.parser')
atag = soup.a
print type(atag)
print atag
결과 에서 알 수 있 듯 이 atag 의 유형 은이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.