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')
'IT' 카테고리의 다른 글
dequeueReusableCellWithIdentifier와 dequeueReusableCellWithIdentifier를 사용하는 경우 : forIndexPath (0) | 2020.06.05 |
---|---|
정렬 된 두 배열을 정렬 된 배열로 병합하는 방법은 무엇입니까? (0) | 2020.06.05 |
스타일 시트로 해석되었지만 MIME 유형 text / html로 전송 된 자원 (웹 서버와 관련이없는 것으로 간주 됨) (0) | 2020.06.05 |
데이터베이스에서 레코드를 버전 관리하는 방법 (0) | 2020.06.05 |
C # 익명 형식을 JSON 문자열로 직렬화하려면 어떻게합니까? (0) | 2020.06.05 |