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을 검사하세요. 각 웹페이지는 고유합니다. 데이터 추출에는 창의성과 실험이 필요한 경우가 많습니다.
우리의 목표는 중복 및 리믹스를 제외한 고유한 MIDI 파일을 다운로드하는 것입니다. 브라우저 개발자 도구(마우스 오른쪽 버튼 클릭, "검사")는 프로그래밍 방식으로 액세스할 HTML 요소를 식별하는 데 도움이 됩니다.
정규식과 함께 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_track
에 nes_midi_scraper.py
기능을 추가하세요:
pip install requests==2.22.0 beautifulsoup4==4.8.1
이 기능은 각 트랙을 다운로드하여 고유한 파일 이름으로 저장합니다. 원하는 저장 디렉토리에서 스크립트를 실행하십시오. 약 2230개의 MIDI 파일을 다운로드해야 합니다(웹사이트의 현재 콘텐츠에 따라 다름).
웹의 잠재력 탐구
웹 스크래핑을 통해 방대한 데이터세트를 접할 수 있습니다. 웹페이지 변경으로 인해 코드가 손상될 수 있다는 점을 기억하세요. 스크립트를 최신 상태로 유지하세요. Mido(MIDI 데이터 처리용) 및 Magenta(신경망 훈련용)와 같은 라이브러리를 사용하여 이 기반을 구축하세요.
위 내용은 Beautiful Soup을 사용하여 Python에서 웹 스크래핑 및 HTML 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

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

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

CompiledLanguagesOfferSpeedSecurity, while InterpretedLanguagesProvideeaseofusEandportability

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

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

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


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

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

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

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기