찾다
백엔드 개발파이썬 튜토리얼Beautiful Soup을 사용하여 Python에서 웹 스크래핑 및 HTML 구문 분석

Python과 Beautiful Soup으로 웹 스크래핑의 힘 활용: MIDI 음악 예

인터넷은 정보의 보고이지만 전용 API가 없으면 프로그래밍 방식으로 인터넷에 액세스하는 것이 어려울 수 있습니다. Python의 Beautiful Soup 라이브러리는 웹 페이지에서 직접 데이터를 스크랩하고 구문 분석할 수 있는 강력한 솔루션을 제공합니다.

MIDI 데이터를 스크랩하여 클래식 Nintendo 스타일 음악을 생성하기 위한 Magenta 신경망을 훈련함으로써 이에 대해 살펴보겠습니다. VGM(비디오 게임 음악 아카이브)에서 MIDI 파일을 소스로 제공합니다.

환경 설정

Python 3 및 pip가 설치되어 있는지 확인하세요. 종속성을 설치하기 전에 가상 환경을 생성하고 활성화하는 것이 중요합니다.

pip install requests==2.22.0 beautifulsoup4==4.8.1

뷰티플수프 4를 사용하고 있습니다(뷰티풀수프 3는 더 이상 유지되지 않습니다).

요청과 아름다운 수프를 사용한 스크래핑 및 구문 분석

먼저 HTML을 가져와 BeautifulSoup 객체를 생성해 보겠습니다.

import requests
from bs4 import BeautifulSoup

vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')

soup 개체를 사용하면 HTML을 탐색할 수 있습니다. soup.title은 페이지 제목을 제공합니다. print(soup.get_text()) 모든 텍스트를 표시합니다.

아름다운 수프의 힘을 마스터하세요

find()find_all() 메소드가 필수적입니다. soup.find()는 단일 요소를 타겟팅합니다(예: soup.find(id='banner_ad').text는 배너 광고 텍스트를 가져옴). soup.find_all() 여러 요소를 반복합니다. 예를 들어 다음은 모든 하이퍼링크 URL을 인쇄합니다.

for link in soup.find_all('a'):
    print(link.get('href'))

find_all()은 정확한 필터링을 위해 정규 표현식이나 태그 속성과 같은 인수를 허용합니다. 고급 기능은 Beautiful Soup 문서를 참조하세요.

HTML 탐색 및 구문 분석

파싱 코드를 작성하기 전에 브라우저에서 렌더링된 HTML을 검사하세요. 각 웹페이지는 고유합니다. 데이터 추출에는 창의성과 실험이 필요한 경우가 많습니다.

Web Scraping and Parsing HTML in Python with Beautiful Soup

우리의 목표는 중복 및 리믹스를 제외한 고유한 MIDI 파일을 다운로드하는 것입니다. 브라우저 개발자 도구(마우스 오른쪽 버튼 클릭, "검사")는 프로그래밍 방식으로 액세스할 HTML 요소를 식별하는 데 도움이 됩니다.

Web Scraping and Parsing HTML in Python with Beautiful Soup

정규식과 함께 find_all()을 사용하여 MIDI 파일이 포함된 링크를 필터링해 보겠습니다(이름에 괄호가 있는 링크 제외).

만들기 nes_midi_scraper.py:

import re
import requests
from bs4 import BeautifulSoup

vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')

if __name__ == '__main__':
    attrs = {'href': re.compile(r'\.mid$')}
    tracks = soup.find_all('a', attrs=attrs, string=re.compile(r'^((?!\().)*$'))
    count = 0
    for track in tracks:
        print(track)
        count += 1
    print(len(tracks))

MIDI 파일을 필터링하고 링크 태그를 인쇄하며 총 개수를 표시합니다. python nes_midi_scraper.py으로 실행하세요.

MIDI 파일 다운로드

이제 필터링된 MIDI 파일을 다운로드해 보겠습니다. download_tracknes_midi_scraper.py 기능을 추가하세요:

pip install requests==2.22.0 beautifulsoup4==4.8.1

이 기능은 각 트랙을 다운로드하여 고유한 파일 이름으로 저장합니다. 원하는 저장 디렉토리에서 스크립트를 실행하십시오. 약 2230개의 MIDI 파일을 다운로드해야 합니다(웹사이트의 현재 콘텐츠에 따라 다름).

Web Scraping and Parsing HTML in Python with Beautiful Soup

웹의 잠재력 탐구

웹 스크래핑을 통해 방대한 데이터세트를 접할 수 있습니다. 웹페이지 변경으로 인해 코드가 손상될 수 있다는 점을 기억하세요. 스크립트를 최신 상태로 유지하세요. Mido(MIDI 데이터 처리용) 및 Magenta(신경망 훈련용)와 같은 라이브러리를 사용하여 이 기반을 구축하세요.

위 내용은 Beautiful Soup을 사용하여 Python에서 웹 스크래핑 및 HTML 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Python의 실행 모델 : 컴파일, 해석 또는 둘 다?Python의 실행 모델 : 컴파일, 해석 또는 둘 다?May 10, 2025 am 12:04 AM

pythonisbothcompiledandlandingreted.

Python은 라인별로 실행됩니까?Python은 라인별로 실행됩니까?May 10, 2025 am 12:03 AM

Python은 엄격하게 라인 별 실행이 아니지만 통역사 메커니즘을 기반으로 최적화되고 조건부 실행입니다. 통역사는 코드를 PVM에 의해 실행 된 바이트 코드로 변환하며 상수 표현식을 사전 컴파일하거나 루프를 최적화 할 수 있습니다. 이러한 메커니즘을 이해하면 코드를 최적화하고 효율성을 향상시키는 데 도움이됩니다.

파이썬에서 두 목록을 연결하는 대안은 무엇입니까?파이썬에서 두 목록을 연결하는 대안은 무엇입니까?May 09, 2025 am 12:16 AM

Python에는 두 개의 목록을 연결하는 방법이 많이 있습니다. 1. 연산자 사용 간단하지만 큰 목록에서는 비효율적입니다. 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 효율적이고 읽기 쉬운 = 연산자를 사용하십시오. 4. 메모리 효율적이지만 추가 가져 오기가 필요한 itertools.chain function을 사용하십시오. 5. 우아하지만 너무 복잡 할 수있는 목록 구문 분석을 사용하십시오. 선택 방법은 코드 컨텍스트 및 요구 사항을 기반으로해야합니다.

파이썬 : 두 목록을 병합하는 효율적인 방법파이썬 : 두 목록을 병합하는 효율적인 방법May 09, 2025 am 12:15 AM

Python 목록을 병합하는 방법에는 여러 가지가 있습니다. 1. 단순하지만 큰 목록에 대한 메모리 효율적이지 않은 연산자 사용; 2. 효율적이지만 원래 목록을 수정하는 확장 방법을 사용하십시오. 3. 큰 데이터 세트에 적합한 itertools.chain을 사용하십시오. 4. 사용 * 운영자, 한 줄의 코드로 중소형 목록을 병합하십시오. 5. Numpy.concatenate를 사용하십시오. 이는 고성능 요구 사항이있는 대규모 데이터 세트 및 시나리오에 적합합니다. 6. 작은 목록에 적합하지만 비효율적 인 Append Method를 사용하십시오. 메소드를 선택할 때는 목록 크기 및 응용 프로그램 시나리오를 고려해야합니다.

편집 된 vs 해석 언어 : 장단점편집 된 vs 해석 언어 : 장단점May 09, 2025 am 12:06 AM

CompiledLanguagesOfferSpeedSecurity, while InterpretedLanguagesProvideeaseofusEandportability

파이썬 : 가장 완전한 가이드 인 루프를 위해파이썬 : 가장 완전한 가이드 인 루프를 위해May 09, 2025 am 12:05 AM

Python에서, for 루프는 반복 가능한 물체를 가로 지르는 데 사용되며, 조건이 충족 될 때 반복적으로 작업을 수행하는 데 사용됩니다. 1) 루프 예제 : 목록을 가로 지르고 요소를 인쇄하십시오. 2) 루프 예제 : 올바르게 추측 할 때까지 숫자 게임을 추측하십시오. 마스터 링 사이클 원리 및 최적화 기술은 코드 효율성과 안정성을 향상시킬 수 있습니다.

Python은 문자열로 나열됩니다Python은 문자열로 나열됩니다May 09, 2025 am 12:02 AM

목록을 문자열로 연결하려면 Python의 join () 메소드를 사용하는 것이 최선의 선택입니다. 1) join () 메소드를 사용하여 목록 요소를 ''.join (my_list)과 같은 문자열로 연결하십시오. 2) 숫자가 포함 된 목록의 경우 연결하기 전에 맵 (str, 숫자)을 문자열로 변환하십시오. 3) ','. join (f '({fruit})'forfruitinfruits와 같은 복잡한 형식에 발전기 표현식을 사용할 수 있습니다. 4) 혼합 데이터 유형을 처리 할 때 MAP (str, mixed_list)를 사용하여 모든 요소를 ​​문자열로 변환 할 수 있도록하십시오. 5) 큰 목록의 경우 ''.join (large_li

Python의 하이브리드 접근법 : 컴파일 및 해석 결합Python의 하이브리드 접근법 : 컴파일 및 해석 결합May 08, 2025 am 12:16 AM

PythonuseSahybrideactroach, combingingcompytobytecodeandingretation.1) codeiscompiledToplatform-IndependentBecode.2) bytecodeistredbythepythonvirtonmachine, enterancingefficiency andportability.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기