하얀설표 블로그




해결)Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?





( 수정됨)


에러 예시

import bs4
html = '<p>하얀설표 블로그</p>'
soup = bs4.BeautifulSoup(html, 'adsf')
print(soup)

>> Traceback (most recent call last):
  File "c:\seolpyo\example.py", line 3, in <module>
    soup = bs4.BeautifulSoup(html, 'adsf')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File ""C:\seolpyo\Lib\site-packages\bs4\__init__.py", line 250, in __init__
    raise FeatureNotFound(
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: adsf. Do you need to install a parser library?

해결방법

유효한 markup 인수를 전달하거나, 파싱을 위한 모듈을 설치한 다음 다시 실행한다.

설명

파싱을 위해 전달한 markup을 찾지 못할 때 발생하는 문제다.
이 문제의 원인은 2가지 중 하나인데, 다음과 같다.

  1. 파싱을 위한 모듈이 설치되지 않았을 때
  2. 유효하지 않은 markup 인수를 전달했을 때

에러 예시 코드를 보면 markup 인수로 adsf라는 아무렇게나 입력한 텍스트가 있는 것을 알 수 있다. 이런 경우 2번 이유로 발생한 에러다.
파이썬 beautifulsoup에서 지원하는 markup은 html.parser, lxml, lxml-xml, xml, html5lib이 있다.
이 중 lxml을 제외한 나머지는 기본적으로 내장되어 있기 때문에 에러가 발생하진 않을 것이다.

lxml 패키지가 설치되지 않은 경우 "pip install lxml" 명령 등을 입력해 설치하던가, lxml대신 xml을 인수로 전달할 수도 있다.
공식 문서에 따르면 lxml과 xml의 차이는 파싱 속도와 스스로 닫히는 태그에 대한 처리 방법이 다르다고 한다.

자세한 내용은 공식 문서에서 확인이 가능하다.


공감 : 0







white.seolpyo.com