가수면
크롤링 본문
단순 지칭 및 첨언
*requests 패키지*
import requests (requests 라이브러리 설치 필요)
r = requests.get('http://spartacodingclub.shop/sparta_api/seoulair')
rjson = r.json()
rows = rjson['RealtimeCityAir']['row']
for row in rows:
gu_name = row['MSRSTE_NM']
gu_mise = row['IDEX_MVL']
if gu_mise < 40:
print(gu_name)
*beautifulsoup (bs4) 패키지*
import requests
from bs4 import BeautifulSoup
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('https://movie.naver.com/movie/sdb/rank/rmovie.naver?sel=pnt&date=20210829',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
//코딩 시작
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a'(데이터 페이지 제목 우클릭>검사>복사>selector 복사))
print(title)
<a href="/movie/bi/mi/basic.naver?code=186114" title="밥정">밥정</a>
print(title['href'])
/movie/bi/mi/basic.naver?code=186114
print(title.text)
밥정
*영화 제목, 순위, 평점 크롤링*
1. 제목부터 크롤링
1-1. 제목 부분 selector 복사해보기
#old_content > table > tbody > tr:nth-child(2) > td.title > div > a
#old_content > table > tbody > tr:nth-child(3) > td.title > div > a
1-2. select_one이 아닌 여러 개를 select로 잡기 (print(movies)해보면 이게 리스트 형식이라는 것을 알 수 있음)
movies = soup.select('#old_content > table > tbody > tr')
1-3. 리스트를 for문으로 돌린 뒤 제목 부분을 select_one으로 잡기
for movie in movies:
a = movie.select_one('td.title > div > a')'
1-4. print(a)를 했을 때 None으로 뜨는 영화 순위 10 단위로 끊어주는 가로선 없애기
if a is not None:
print(a.text)
2. 순위 크롤링
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a = movie.select_one('td.title > div > a')'
if a is not None:
title = a.text
2-1. 제목 부분 selector 복사해보기
#old_content > table > tbody > tr:nth-child(2) > td:nth-child(1) > img
#old_content > table > tbody > tr:nth-child(3) > td:nth-child(1) > img
2-2. 순위 부분 select_one으로 잡기
rank = movie.select_one('td:nth-child(1) > img')
2-3. 프린트 해본 뒤, 결과값으로 순위만 다시 프린트 해보기
print(rank['alt'])
2-4. 위로 올려 붙이기
rank = movie.select_one('td:nth-child(1) > img')['alt']
3. 같은 방식으로 나머지 평점까지 크롤링
star = movie.select_one('td.point').text
print(rank,title,star)
*지니 순위, 제목, 가수 크롤링*
musics = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for music in musics:
1. 순위
rank = music.select_one('td.number').text[0:2].strip()
문자열 슬라이싱
.text[0:2] [문자 시작 번호:문자 끝 번호]
문자열 및 공백 제거
>>> ex_str = " hello "
>>> ex_str.strip()
# 'hello'
2. 제목
title = music.select_one('td.info > a.title.ellipsis').text.strip()
3. 가수 및 프린트
artist = music.select_one('td.info > a.artist.ellipsis').text
print(rank,title,artist)
'웹 개발 > 기타' 카테고리의 다른 글
React와 Next에 PWA 적용하기 (0) | 2023.01.24 |
---|---|
셀레니움 (selenium) 4.0 사용법 (1) | 2022.11.15 |
서버 배포하기 (0) | 2022.10.24 |
리눅스 명령어 (0) | 2022.10.21 |
Pymongo DB (1) | 2022.10.19 |