웹개발

크롤링

content0474 2024. 9. 12. 12:07

웹페이지 내에서 내가 원하는 정보만 가져오는 방법

from bs4 import BeautifulSoup
import requests
url = "크롤링하려는 웹사이트 주소"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(url, headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')

 

# 선택자를 사용하는 방법 (copy selector)
soup.select('태그명')
soup.select('.클래스명')
soup.select('#아이디명')

soup.select('상위태그명 > 하위태그명 > 하위태그명')
soup.select('상위태그명.클래스명 > 하위태그명.클래스명')

# 태그와 속성값으로 찾는 방법
soup.select('태그명[속성="값"]')

# 한 개만 가져오고 싶은 경우
soup.select_one('위와 동일')   ->같은 것이 여러개더라도 맨 위의 데이터를 가져온다.

 

tr=soup.select_one('.lst50')
title=tr.select_one('.rank01>span>a').text
print(title)
class=lst50 의 제일 위에것을 tr이라고 하고
tr에서도class=rank01내에서 <span>태그 내의 <a>태그의 글자만 가져와서 그것을 title이라고 한다.
이 때 결과를 뽑아보면? -> 랭킹1위 노래의 제목

 

trs=soup.select('table>tbody>tr')
for tr in trs:
    title=tr.select_one('.rank01>span>a').text
    artist=tr.select_one('.rank02>a').text
    rank=tr.select_one('.rank').text
    img=tr.select_one('img')['src']
    print(title, artist, rank, img)
반복문 for in을 사용해서 1위부터 100위까지 모든 노래의 제목, 가수, 랭킹, 이미지를 뽑는 방법

위에서 한 것과 비슷하게 select_one으로 정보를 뽑아준 다음 이것들을 for in 안에 넣기만 하면 된다. 

 

 

'웹개발' 카테고리의 다른 글

파이썬에서 반복문, 함수  (0) 2024.09.10
javascript, jquery 문법연습  (1) 2024.09.08
조건문 ,반복문  (0) 2024.09.07
Javascript 기본문법-변수, 연산, list, dictionary  (0) 2024.09.05
class, id, flex  (0) 2024.09.04