IT

bs4.FeatureNotFound : 요청한 기능이 포함 된 트리 빌더를 찾을 수 없습니다 : lxml.

lottoking 2020. 6. 5. 08:13
반응형

bs4.FeatureNotFound : 요청한 기능이 포함 된 트리 빌더를 찾을 수 없습니다 : lxml. 파서 라이브러리를 설치해야합니까?


...
soup = BeautifulSoup(html, "lxml")
File "/Library/Python/2.7/site-packages/bs4/__init__.py", line 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?

위의 결과는 내 터미널에서 출력됩니다. Mac OS 10.7.x에 있습니다. Python 2.7.1이 있고이 자습서따라 Beautiful Soup 및 lxml을 얻었습니다. 이는 성공적으로 설치되고 여기에 있는 별도의 테스트 파일로 작동 합니다 . 이 오류를 발생시키는 Python 스크립트에서이 줄을 포함 시켰습니다. from pageCrawler import comparePages그리고 pageCrawler 파일에서 다음 두 줄을 포함했습니다.from bs4 import BeautifulSoup from urllib2 import urlopen

문제가 무엇인지, 그리고 어떻게 해결할 수 있는지 알아내는 데 도움이된다면 감사하겠습니다.


BS가 HTML을 읽는 데 사용할 파서와 관련이 있다는 의혹이 있습니다. 그들은 문서가 여기 있지만, 당신이 나와 같은 경우 (OSX에서) 약간의 작업이 필요한 무언가가 붙어있을 수 있습니다.

위의 BS4 문서 페이지에서 기본적으로 BS4는 Python 내장 HTML 파서를 사용한다는 것을 알 수 있습니다. OSX에 있다고 가정하면 Apple 번들 버전의 Python은 2.7.2이며 문자 형식에는 적합하지 않습니다. 나는이 같은 문제에 부딪쳤다. 그래서 나는 그것을 해결하기 위해 파이썬 버전을 업그레이드했다. virtualenv에서이를 수행하면 다른 프로젝트의 중단을 최소화 할 수 있습니다.

그렇게하는 것이 고통스럽게 들리면 LXML 파서로 전환 할 수 있습니다.

pip install lxml

그런 다음 시도하십시오.

soup = BeautifulSoup(html, "lxml")

시나리오에 따라 충분할 수 있습니다. 나는 내 파이썬 버전을 업그레이드 할만 큼 성가신 것을 발견했다. virtualenv를 사용하면 패키지를 상당히 쉽게 마이그레이션 할 수 있습니다.


bs4가 설치된 기본 파이썬의 경우 다음을 사용하여 XML을 처리 할 수 ​​있습니다.

soup = BeautifulSoup(html, "html5lib")

그러나 formatter = 'xml' 을 사용하려면 다음을 수행해야합니다.

pip3 install lxml

soup = BeautifulSoup(html, features="xml")

나는 python html 파서 내장을 선호하고 설치가 필요하지 않습니다.

soup = BeautifulSoup(s, "html.parser")


Python 3.6을 사용하고 있으며이 게시물에서 동일한 원래 오류가 발생했습니다. 명령을 실행 한 후 :

python3 -m pip install lxml

내 문제를 해결했다


lxml을 사용하는 대신 html.parser를 사용하면 다음 코드를 사용할 수 있습니다.

soup = BeautifulSoup(html, 'html.parser')

BeautifulSoup은 기본적으로 HTML 파서를 지원하지만 다른 타사 파이썬 파서를 사용하려면 (lxml)과 같은 외부 파서를 설치해야합니다.

soup_object= BeautifulSoup(markup,"html.parser") #Python HTML parser

그러나 파서를 매개 변수로 지정하지 않으면 파서가 지정되지 않았다는 경고가 표시됩니다.

soup_object= BeautifulSoup(markup) #Warnning

다른 외부 파서를 사용하려면 해당 파서를 설치 한 다음 지정해야합니다. 처럼

pip install lxml

soup_object= BeautifulSoup(markup,'lxml') # C dependent parser 

외부 파서는 c와 python 의존성을 가지고 있으며 장점과 단점이 있습니다.


같은 문제가 발생했습니다. 그 이유는 내가 약간 오래된 파이썬 6 패키지를 가지고 있기 때문입니다.

>>> import html5lib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/html5lib/__init__.py", line 16, in <module>
    from .html5parser import HTMLParser, parse, parseFragment
  File "/usr/local/lib/python2.7/site-packages/html5lib/html5parser.py", line 2, in <module>
    from six import with_metaclass, viewkeys, PY3
ImportError: cannot import name viewkeys

6 개의 패키지를 업그레이드하면 문제가 해결됩니다.

sudo pip install six=1.10.0

일부 참고 문헌에서 첫 번째 대신 두 번째를 사용하십시오.

soup_object= BeautifulSoup(markup,'html-parser')
soup_object= BeautifulSoup(markup,'html.parser')

참고 URL : https://stackoverflow.com/questions/24398302/bs4-featurenotfound-couldnt-find-a-tree-builder-with-the-features-you-requeste

반응형