웹페이지 내에서 내가 원하는 정보만 가져오는 방법
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 |