상세 컨텐츠

본문 제목

실습으로 끝장내는 파이썬 웹 크롤링(2)

백엔드/파이썬

by 호치민 개발자 2023. 1. 31. 19:56

본문

 

bs4를 활용한 웹 크롤링에서 html 의 클래스를 활용할 수 있다.

 

titles = soup.select(".api_txt_lines.total_tit")

위와 같이 쓰면 검색시에 나온 제목의 class 명을 가져온 것이다. 

 

만약 여러개의 class를 가져와야 될 경우에는 

titles = soup.select(".api_txt_lines.total_tit")
names = soup.select(".sub_txt.sub_name")

for result in zip(names,titles):
    print(type(result))
    print(result[0].text)
    print(result[1].text)
    print(result[1]['href'])
    print()

위처럼 zip 함수를 활용할 수 있다. 

zip 함수는 각각의 항목이 태그와 class 이름이 변동없이 규칙적인 경우 사용 가능하다 

*이를 대비해서 꼭 여러개의 다양한 검색어를 테스트 크롤링해서 변칙적인 부분이 있는지 주의해야 함 

 

만약 class이름이 다르거나 태그가 빠져있으면 위와 같은 방법으로 크롤링 할 경우 

예) 판해자 : LG전자 전문판매자 홍길동

    제품: 삼성 비스포크 냉장고 a타입

 

이처럼 상단의 내용과 하단의 내용 간에 섞이면서 크롤링 되는 불상사가 생길 수 있다 

 

 


같은 태그를 찾는 3가지 다른 방법

req = requests.get(url, headers=window_headers)
html = req.text
soup = BeautifulSoup(html, "html.parser")
# 첫번째
print(soup.h1)
print('////')

# 두번째
h1= soup.find('h1')
print(h1)
print('////')

# 세번째
h1_select = soup.select_one('h1')
print(h1_select)
print('////')

# 네번째
h1_class = soup.find(class_="logo_default")
print(h1_class)

 

 상기와 같이 총 네가지 방법이 가능하다 (더 있을 수 있다)

 

1) 직접 가리키는 방법

2) find

3) select_one

4) 클래스 명 직접 작성이 있으며 결과는 모두 아래와 같이 동일하다 

*클래스를 입력할때는 꼭 class_(언더바)를 입력해줘야 한다 id 일 경우는 필요 없음

 

 

 

관련글 더보기