수색…


비고

이 섹션에서는 Beautiful Soup이 무엇인지, 사용 된 것이 무엇인지, 사용법에 대한 간단한 개요를 설명합니다.

Beautiful Soup은 사전 설치된 html / xml 파서를 사용하고 웹 페이지 / html / xml을 태그, 요소, 속성 및 값으로 구성된 트리로 변환하는 Python 라이브러리입니다. 더 정확하게 말하면 트리는 네 가지 유형의 객체, Tag, NavigableString, BeautifulSoup 및 Comment로 구성됩니다. 그런 다음이 트리는 구문 분석기 라이브러리에서 생성 된 BeautifulSoup 개체의 메서드 / 속성을 사용하여 "쿼리"할 수 있습니다.

귀하의 필요 : 종종 다음과 같은 필요 사항 중 하나가있을 수 있습니다 :

  1. 웹 페이지를 분석하여 발견되는 태그의 수, 발견 된 각 태그의 요소 수 및 값을 파싱 할 수 있습니다. 변경하고 싶을 수도 있습니다.

  2. 요소 이름과 값을 결정하여 Selenium 과 같은 웹 페이지 자동화를 위해 다른 라이브러리와 함께 사용할 수 있습니다.

  3. 웹 페이지에 표시된 데이터를 다른 형식 (예 : CSV 파일 또는 SQLite 또는 mysql과 같은 관계형 데이터베이스)으로 전송 / 추출 할 수 있습니다. 이 경우 라이브러리는 전송 작업을 수행하기 위해 다른 라이브러리를 사용하지만 웹 페이지의 구조를 이해하는 첫 번째 단계를 도와줍니다.

  4. 얼마나 많은 요소가 특정 CSS 스타일로 스타일이 지정되어 있는지, 어떤 스타일이 어떤 스타일로 구성되어 있는지 확인할 수 있습니다.

파이썬 코드의 일반적인 기본 사용 순서 :

  1. Beautiful Soup 라이브러리 가져 오기

  2. 사용할 파서를 언급하여 BeautifulSoup 라이브러리로 웹 페이지 또는 HTML 텍스트를 엽니 다. 이 단계의 결과는 BeautifulSoup 개체입니다. (참고 : 언급 한이 파서 이름은 파이썬 패키지의 일부로 이미 설치되어 있어야합니다. 예를 들어, html.parser 는 Python과 함께 제공되는 내장 '배터리 포함'패키지입니다. lxml 과 같은 다른 파서를 설치할 수 있습니다 또는 html5lib .)

  3. "Query"또는 'object.method' 구문을 사용하여 BeautifulSoup 객체를 검색하고 그 결과를 Python 사전과 같은 컬렉션으로 가져옵니다. 일부 메소드의 경우 출력은 간단한 값이됩니다.

  4. 이전 단계의 결과를 사용하여 Python 코드의 나머지 부분에서 원하는 작업을 수행하십시오. 트리 객체에서 요소 값 또는 속성 값을 수정할 수도 있습니다. 수정은 html 코드의 소스에는 영향을 미치지 않지만, 출력 형식 지정 메소드 (예 : prettify )를 호출하여 BeautifulSoup 객체에서 새로운 출력을 생성 할 수 있습니다.

일반적으로 사용되는 메서드 : 일반적으로 .find.find_all 메서드는 트리를 검색하여 입력 인수를 제공하는 데 사용됩니다.

입력 인수는 다음과 같습니다. 태그 이름, 속성 이름 및 기타 관련 인수. 이러한 인수는 문자열, 정규 표현식, 목록 또는 함수로 표현 될 수 있습니다.

BeautifulSoup 객체의 일반적인 용도 는 다음과 같습니다.

  1. CSS 클래스로 검색
  2. 하이퍼 링크 주소로 검색
  3. 요소 ID로 검색, 태그
  4. 속성 이름으로 검색하십시오. 속성 값.

위의 기준을 조합하여 트리를 필터링해야하는 경우 true 또는 false로 평가하고 해당 함수로 검색하는 함수를 작성할 수도 있습니다.

버전

번역 비고 패키지 이름 출시일
3.x 버전 3.2.1; 파이썬 2 전용 아름다운 2012-02-16
4.x 버전 4.5.0; 파이썬 2와 3 아름다운 것 4 2016-07-20

설치 또는 설정

pip 가 BeautifulSoup를 설치하는 데 사용될 수 있습니다. BeautifulSoup 버전 4를 설치하려면 다음 명령을 실행하십시오.

pip install beautifulsoup4

패키지 이름은 beautifulsoup4 대신 beautifulsoup 이며, 후자는 이전 릴리즈를 나타냅니다. old beautifulsoup를 참조하십시오.

BeautifulSoup "Hello World"스크래핑 예제

from bs4 import BeautifulSoup
import requests

main_url = "https://fr.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")

# Finding the main title tag.
title = soup.find("h1", class_ = "firstHeading")
print title.get_text()

# Finding the mid-titles tags and storing them in a list.
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]

# Now using css selectors to retrieve the article shortcut links
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
    print tag.a.get("href")

# Retrieving the side page links by "blocks" and storing them in a dictionary
side_page_blocks = soup.find("div",
                            id = "mw-panel").find_all("div",
                                                      class_ = "portal")
blocks_links = {}
for num, block in enumerate(side_page_blocks):
    blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)]

print blocks_links[0]

산출:

"Hello, World!" program
#Purpose
#History
#Variations
#See_also
#References
#External_links
[u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en', u'//shop.wikimedia.org']

Beautiful Soup을 instanciating 할 때 선호하는 파서를 입력하면 no parser was explicitely specified 선언하는 일반적인 Warning 피할 수 있습니다.

웹 페이지 트리에서 요소를 찾는 데 여러 가지 방법을 사용할 수 있습니다.

몇 가지 다른 방법이 있지만 CSS classesCSS selectors 는 트리에서 요소를 찾는 두 가지 편리한 방법입니다.

태그를 검색 할 때 속성 값을 True로 설정하여 태그를 찾을 수 있다는 점에 유의해야합니다.

get_text() 는 태그 안에 포함 된 텍스트를 검색 할 수있게합니다. 그것을 단일 유니 코드 문자열로 반환합니다. tag.get("attribute") 태그의 속성 값을 얻을 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow