이 가이드는 Python을 사용하여 웹 크롤링을 수행하는 방법에 대한 자세한 단계별 튜토리얼을 제공합니다. 필요한 라이브러리 설치, 초기 크롤링 코드 제작, 특정 요구 사항을 처리하기 위한 코드 개선 등을 다룹니다. 원활한 실행을 보장하기 위한 강력한 오류 처리 기술을 사용하여 특정 HTML 요소에서 데이터를 추출하고 처리하는 데 중점을 둡니다. 튜토리얼은 타겟 웹 페이지에서 텍스트를 스크랩하고 일반적인 문제를 처리하는 방법을 보여주는 실제 예제로 마무리됩니다.
1. 필요한 라이브러리 설치
웹 크롤링을 위해 다음 라이브러리를 설치해야 합니다.
pip install requests
pip install beautifulsoup4
2. 크롤링 코드 작성
다음은 주어진 웹 페이지에서 첫 번째 링크를 통해 해당 페이지의 p
태그 텍스트를 수집하는 파이썬 코드입니다.
import requests
from bs4 import BeautifulSoup
# 시작 페이지 URL
start_url = 'https://theminjoo.kr/main/sub/news/list.php?brd=230'
# 시작 페이지 요청
response = requests.get(start_url)
response.raise_for_status()
soup = BeautifulSoup(response.content, 'html.parser')
# 첫 번째 링크 추출
container = soup.select_one('#container > div.article-body > div > div.board-list__wrap')
first_link_tag = container.select_one('div.board-list > div:nth-child(1) a')
# 추출한 링크 확인 및 절대 경로로 변환
if first_link_tag and 'href' in first_link_tag.attrs:
first_link = first_link_tag['href']
if first_link.startswith('http'):
full_link = first_link
elif first_link.startswith('/'):
full_link = 'https://theminjoo.kr' + first_link
else:
full_link = 'https://theminjoo.kr/main/sub/news/' + first_link.lstrip('./')
print(f'First link: {full_link}')
# 첫 번째 링크 페이지 요청
page_response = requests.get(full_link)
page_response.raise_for_status()
page_soup = BeautifulSoup(page_response.content, 'html.parser')
# 좁혀진 선택자 범위 내에서 p 태그 텍스트 추출
specific_container = page_soup.select_one('#container > div.article-body > div > div.board-view__wrap > div.board-view > div.board-view__body')
if specific_container:
p_tags = specific_container.find_all('p')
p_texts = [p.get_text() for p in p_tags]
# 결과 출력
for text in p_texts:
print(text)
else:
print('지정된 선택자 범위 내에 내용이 없습니다.')
else:
print('첫 번째 링크를 찾을 수 없습니다.')
3. 중요한 부분과 에러 체크
- 첫 번째 링크 추출
first_link_tag
에서href
속성을 추출하여 링크를 확인합니다.- 링크가 절대 경로인지, 상대 경로인지 확인하고 절대 경로로 변환합니다.
- 에러 처리
requests.get(full_link)
후response.raise_for_status()
를 통해 HTTP 오류를 처리합니다.- 링크가 상대 경로일 경우,
./
또는/
로 시작하는지 확인하여 올바른 절대 경로로 변환합니다. - 특정 선택자 범위 내에 데이터가 없는 경우를 처리합니다.
- 좁혀진 선택자 범위 내의
p
태그 추출#container > div.article-body > div > div.board-view__wrap > div.board-view > div.board-view__body
선택자 내의p
태그를 추출합니다.
#웹스크래핑
#파이썬프로그래밍
#데이터과학
#코딩튜토리얼
#웹 크롤링
'python' 카테고리의 다른 글
텍스트를 음성으로 변환하여 파일로 저장하는 파이썬 스크립트 가이드 (0) | 2024.06.28 |
---|---|
엑셀 파일 통합: VBA 매크로 vs 파이썬 - 어떤 방법이 더 좋을까? (0) | 2024.06.20 |
[혼자하는 파이썬] 구글 뉴스 검색...키워드 입력&기간 조정 (1) | 2024.04.21 |
[혼자하는 파이썬] 파이썬으로 무료 쇼츠 만들기 (1) | 2024.03.29 |
[혼자하는 파이썬] 파이썬으로 mp3 음원 만들기 (1) | 2024.03.29 |