>백엔드 개발 >파이썬 튜토리얼 >HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?

HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?

James Robert Taylor
James Robert Taylor원래의
2025-03-10 18:54:181002검색

html을 구문 분석하기 위해 아름다운 수프를 사용하는 방법

아름다운 수프는 HTML 및 XML 문서를 구문 분석하도록 설계된 파이썬 라이브러리입니다. 주어진 HTML에서 구문 분석 트리를 만들어 데이터를 쉽게 탐색, 검색 및 수정할 수 있습니다. 이를 사용하려면 먼저 PIP를 사용하여 설치해야합니다. 그런 다음 Python 스크립트로 가져와 HTML 컨텐츠를 구문 분석하는 데 사용할 수 있습니다. 기본 예는 다음과 같습니다.

 <code class="python"> bs4 가져 오기 BeautifulSoup 가져 오기 요청 # html 컨텐츠 가져 오기 (URL로 교체) url = "https : //www.example.com" 응답 = requests.get (url) response.raise_for_status () # 나쁜 응답에 대한 httperror를 높이기 (4xx 또는 5xx) html_content = response.content # html soup = beautifulsoup (html_content, & quot; html.parser & quot;) # # proste to the the the the the the the the the the the the the the the the the the print to the the the that the beautifulsoup (html_content, & quot;) tag print (soup.find_all ( "p & quot;)) # 모든 단락 태그 </code> 

이 코드는 먼저 요청 라이브러리를 사용하여 URL에서 html을 가져옵니다 ( pip install requests 와 별도로 설치해야합니다). 그런 다음 beautifulSoup 생성자를 사용하여 HTML 컨텐츠를 구문 분석하여 "html.parser"를 구문 분석자로 지정합니다. 마지막으로 & lt; title & gt; 태그에 액세스하고 모든 & lt; p & gt; 태그를 찾는 것을 보여줍니다. 제작 환경에서 네트워크 오류 ( requests.exceptions.requestexception.requestexception )와 같은 잠재적 예외를 처리하는 것을 잊지 마십시오.

html에서 데이터를 추출하는 가장 일반적인 수프 방법은 무엇입니까?

아름다운 수프는 데이터를 탐색하고 추출하기위한 풍부한 방법을 제공합니다. 가장 일반적인 것은 다음과 같습니다.

  • find () find_all () : 이것은 아름다운 수프의 작업자입니다. find () 지정된 기준과 일치하는 첫 번째 태그를 반환하는 반면 find_all () 는 모든 일치하는 태그 목록을 반환합니다. 기준은 태그 이름 (예 : "p", "a"), 속성 (예 : "클래스": "my-class", "id": "my-id"}) 또는 두 가지 조합 일 수 있습니다. 보다 복잡한 일치에 정규 표현식을 사용할 수도 있습니다.
  • select () : 이 메소드는 CSS Selectors를 사용하여 태그를 찾습니다. 이것은 특히 복잡한 HTML 구조를 다룰 때 특정 요소를 대상으로하는 강력하고 간결한 방법입니다. 예를 들어, soup.select ( ".my-class p & quot;) 는"my-class "클래스를 갖는 요소 내에서 모든 & lt; p & gt; 태그를 찾을 수 있습니다. HTML 요소에서 실제 텍스트를 얻는 것은 매우 중요합니다.
  • attrs : 이 속성은 사전으로 태그 속성에 대한 액세스를 제공합니다. 예를 들어, tag [ ""href & quot;] href & lt; a & gt; 태그의 값을 반환합니다.
  • 탐색 : 아름다운 수프는 . <code> .next_sibling , .previous_sibling 등. class = "python"># ... (이전 코드를 얻기위한 이전 코드) ... first_paragraph = soup.find ( "p & quot;) all_paragraphs = soup.find_all ("p & quot;) first_paragraph_text = first_paragraph.get_text () print (first _paragraph_text} & quott} & quott} & quott}. 단락 : {len (all_paragraphs)} ")}

    아름다운 수프로 구문 분석 할 때 다른 HTML 구조와 잠재적 오류를 어떻게 처리 할 수 ​​있습니까?

    HTML은 지저분하고 일치하지 않을 수 있습니다. 변형과 잠재적 오류를 처리하려면 다음 전략을 고려하십시오.

    • 강력한 구문 분석 : Python에 내장 된 "html.parser"(기본값)와 같은 용서 구문자를 사용하십시오. "LXML"(더 빠르지 만 더 엄격한)과 같은 다른 파서보다 기형 HTML을 처리하는 것이 좋습니다.
    • 오류 처리 : 구문 분석 코드를 시도에서 랩핑하십시오. 예기치 않은 데이터 유형의 경우). 변경 될 수있는 특정 클래스 이름 또는 ID에 의존하는 대신 더 일반적인 선택기 또는 속성을 사용하는 것을 고려하십시오.
    • 존재 점검 : 속성 또는 자식 요소에 액세스하기 전에 항상 AttributeError 를 피하기 위해 요소가 존재하는지 확인하십시오. 조건부 명세서 (예 : 요소 : ). Python 's strip () 메소드 및 정규 표현식은 이것에 도움이됩니다.

    오류 처리가 포함 된 예 :

    try : title = soup.find ( "title & quot;). get_text (). Strip (f & quot;)를 제외하고는 Attreater : {title} & quott; 발견. ") ;)

    아름다운 수프가 JavaScript 렌더링 된 컨텐츠를 처리 할 수 ​​있으며, 그렇지 않은 경우 대안은 무엇입니까?

    아니요, 아름다운 수프는 JavaScript 렌더링 된 콘텐츠를 직접 처리 할 수 ​​없습니다. 아름다운 수프는 처음에 다운로드 된 HTML과 함께 작동합니다. JavaScript를 실행하지 않습니다. JavaScript는 페이지로드 후 컨텐츠를 동적으로 렌더링하기 때문에 아름다운 수프는 초기 정적 HTML 만 볼 수 있습니다.

    JavaScript 렌즈 컨텐츠를 처리하려면 대안이 필요합니다.

    • Selenium : 셀레늄은 실제 브라우저 (Chrome 또는 Firefox)를 제어 할 수있는 브라우저 자동 도구입니다. 페이지를 완전히로드하여 JavaScript를 실행할 수있게 한 다음 아름다운 수프를 사용하여 브라우저의 DOM에서 결과 HTML을 구문 분석 할 수 있습니다. 이것은 강력하지만 느린 방법입니다.
    • Playwright : 셀레늄과 유사하게 극작가는 웹 자동화를위한 Node.js 라이브러리 (파이썬 바인딩 포함)입니다.
    • 헤드리스 브라우저 (셀레늄 또는 극작가 포함) : 효율성을 향상시키기 위해 헤드리스 모드 (눈에 띄는 창없이) 브라우저를 실행합니다.
    • 스플래쉬 ( 스플래쉬는 Javascript를위한 대중적인 서비스였습니다. 렌더링 서비스 : 여러 클라우드 기반 서비스는 JavaScript 렌더링 기능을 제공합니다. 이들은 일반적으로 유료 서비스이지만 대규모 스크래핑에 편리 할 수 ​​있습니다.

    스크래핑 웹 사이트는 항상 웹 사이트의 robots.txt 파일 및 서비스 약관을 존중해야합니다. 과도한 스크래핑은 서버를 과부하하고 IP 주소가 차단 될 수 있습니다.

위 내용은 HTML을 구문 분석하기 위해 아름다운 수프를 어떻게 사용합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.