복붙노트

[PYTHON] BeautifulSoup 및 lxml.html - 무엇을 선호합니까? [복제]

PYTHON

BeautifulSoup 및 lxml.html - 무엇을 선호합니까? [복제]

HTML 구문 분석과 관련된 프로젝트를 진행 중입니다.

주위를 검색 한 후에, 나는 두 개의 가능한 옵션을 발견 : BeautifulSoup 및 lxml.html

다른 하나를 선호하는 이유가 있습니까? 필자는 XML 용 lxml을 사용해 왔으며, 필자는 BeautifulSoup이 훨씬 보편적 인 것처럼 보였으 나 더 편안하게 느낄 것이라고 생각합니다.

나는 나를 위해 일하는 것을 사용해야한다는 것을 알고 있지만, 저는 둘 다 개인적인 경험을 찾고있었습니다.

해결법

  1. ==============================

    1.간단한 대답은, 당신이 당신의 소스가 잘 형성되었다고 믿는다면, lxml 솔루션으로 가라. 그렇지 않으면, BeautifulSoup 끝까지.

    간단한 대답은, 당신이 당신의 소스가 잘 형성되었다고 믿는다면, lxml 솔루션으로 가라. 그렇지 않으면, BeautifulSoup 끝까지.

    편집하다:

    이 대답은 3 살입니다. Jonathan Vanasco는 주석에서 BeautifulSoup4가 lxml을 내부 파서로 사용할 수 있도록 지원하므로 BeautifulSoup의 고급 기능과 인터페이스를 사용할 수 있습니다 lxml은 나 자신을 위해 - 아마도 습관의 힘이다 :)).

  2. ==============================

    2.요약하면, lxml은 초고속의 프로덕션 수준의 html 및 xml 파서로 자리 매김하고 있습니다.이 파서는 BeautifulSoup의 기능을 사용하지 못하게하는 soupparser 모듈도 포함합니다. BeautifulSoup는 단조로운 html 또는 xml에서 빠르게 데이터를 추출 할 수있는 시간을 절약하도록 설계된 1 인칭 프로젝트입니다.

    요약하면, lxml은 초고속의 프로덕션 수준의 html 및 xml 파서로 자리 매김하고 있습니다.이 파서는 BeautifulSoup의 기능을 사용하지 못하게하는 soupparser 모듈도 포함합니다. BeautifulSoup는 단조로운 html 또는 xml에서 빠르게 데이터를 추출 할 수있는 시간을 절약하도록 설계된 1 인칭 프로젝트입니다.

    lxml 문서에는 두 파서 모두 장단점이 있다고 나와 있습니다. 이런 이유로, lxml은 앞뒤로 전환 할 수있는 soupparser를 제공합니다. 인용,

    결국 그들은 말하기를,

    내가 올바르게 이해한다면 수프 파서가 더 견고하다는 것을 의미합니다. 정규식을 사용하여 변형 된 태그의 "수프"를 처리 할 수 ​​있습니다. 반면에 lxml은 더 간단하고 물건을 구문 분석하고 당신은 기대할 것입니다. 나는 또한 lxml을위한 soupparser뿐만 아니라 BeautifulSoup 자체에도 적용된다고 가정합니다.

    그들은 또한 lxml로 빠르게 파싱하는 동안 BeautifulSoup의 인코딩 탐지의 이점을 보여줍니다.

    >>> from BeautifulSoup import UnicodeDammit
    
    >>> def decode_html(html_string):
    ...     converted = UnicodeDammit(html_string, isHTML=True)
    ...     if not converted.unicode:
    ...         raise UnicodeDecodeError(
    ...             "Failed to detect encoding, tried [%s]",
    ...             ', '.join(converted.triedEncodings))
    ...     # print converted.originalEncoding
    ...     return converted.unicode
    
    >>> root = lxml.html.fromstring(decode_html(tag_soup))
    

    (같은 출처 : http://lxml.de/elementsoup.html).

    BeautifulSoup의 창작자의 말에 따르면,

    Beautiful Soup 문서에서 인용.

    나는 이것이 지금 명백하길 바란다. 수프는 잘 설계되지 않은 웹 사이트에서 데이터를 추출 할 시간을 절약 할 수 있도록 설계된 훌륭한 1 인 프로젝트입니다. 목표는 지금 당장 시간을 절약하고 작업을 완료하며 장기간에 걸쳐 시간을 절약 할 필요가 없으며 소프트웨어 성능을 최적화하지 않는 것입니다.

    또한, lxml 웹 사이트에서,

    그리고, 왜 lxml에서?,

  3. ==============================

    3.둘 다 사용 하시겠습니까? DOM 조작을위한 lxml, 구문 분석을위한 BeautifulSoup :

    둘 다 사용 하시겠습니까? DOM 조작을위한 lxml, 구문 분석을위한 BeautifulSoup :

    http://lxml.de/elementsoup.html

  4. ==============================

    4.lxml은 훌륭합니다. 그러나 입력을 HTML로 파싱하는 것은 dom 구조가 실제로 원하는 것을 찾는 데 도움이되는 경우에만 유용합니다.

    lxml은 훌륭합니다. 그러나 입력을 HTML로 파싱하는 것은 dom 구조가 실제로 원하는 것을 찾는 데 도움이되는 경우에만 유용합니다.

    일반 문자열 함수 또는 정규식을 사용할 수 있습니까? html 파싱 작업을 많이하는 경우 입력을 HTML 문서가 아닌 문자열로 처리하는 것은 반 직관적으로 쉬운 방법입니다.

  5. from https://stackoverflow.com/questions/4967103/beautifulsoup-and-lxml-html-what-to-prefer by cc-by-sa and MIT license