python에서 다음과 같은 코드를 실행하면 에러가 발생한다.
name = 'woojin'
a = 5
print(name+a)
이는 문자열과 숫자를 같이 써서 발생하는데 이럴때는 형변환을 통해서 해결해준다.
name = 'woojin'
a = 5
print(name+str(a))
----------result---------
woojin5
Java와는 다르게 자동형변환 되지 않고 사용자가 직접 형변환 해야 된다는 것을 기억해야할 것 같다.
같은 시스템에서 실행되는 다른 파이썬 응용 프로그램들의 동작에 영향을 주지 않기 위해, 파이썬 배포 패키지들을 설치하거나 업그레이드하는 것을 가능하게 하는 격리된 실행 환경
즉, 내가 실행 하는 것에 필요한 것들을 준비해둔 환경이고, 여기서 실행하는 것들은 같은 시스템에서 실행되는 다른 프로그램에 영향을 안주기 때문에 마음놓고 편리하게 원하는 패키지들을 설치하거나 하며 테스트 해볼 수 있는 임의의 환경인 것 같다.
추가로 이 가상환경은 기본적으로 파이참에서 venv 폴더를 통해 제공하는 것 같다.
python을 통해 웹스크래핑을 하기위해선 아래와 같은 패키지들이 필요하다.
requests
bs4
BeautifulSoup()
을 통해 사용위 패키지들을 설치 후 아래와 같은 방법으로 스크래핑을 진행 할 수 있다.
아래는 select_one()
을 통해 하나의 태그의 제목을 가져온 경우이다.
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.nhn?sel=pnt&date=20200303',headers=headers)
# html 코드로 변환(솎아내기)
soup = BeautifulSoup(data.text, 'html.parser')
# 코딩 시작
title = soup.select_one('#old_content > table > tbody > tr:nth-child(2) > td.title > div > a') # copy select를 통해 하나의 태그 선택
1. print(title) # 원하는 태그 한줄 가져오기
2. print(title.text) # 제목(내용 가져오기)
3. print(title.attrs) # 태그의 속성 가져오기
4. print(title['href']) # 태그의 속성 값 가져오기
-----------결과 값-----------
1. <a href="/movie/bi/mi/basic.naver?code=171539" title="그린 북">그린 북</a>
2. 그린 북
3. {'href': '/movie/bi/mi/basic.naver?code=171539', 'title': '그린 북'}
4. /movie/bi/mi/basic.naver?code=171539
추가로 여러개를 가져오기 위해선 select()
를 이용하면 된다.
내가 원하는 부분이 어디 밑에 있는지 'copy selector'를 통해 찾는다.
# #old_content > table > tbody > tr:nth-child(3)
# #old_content > table > tbody > tr:nth-child(4)
# 이를 통해 내가 가지고 오려는 정보가 #old_content > table > tbody > tr 밑에 있는 것을 알 수 있음
trs = soup.select('#old_content > table > tbody > tr')
for tr in trs:
a_tag = tr.select_one('td.title > div > a')
if a_tag is not None:
title = a_tag.text
print(title)
-----------결과 값-----------
그린 북
가버나움
베일리 어게인
주전장
포드 V 페라리
아일라
원더
당갈
쇼생크 탈출
터미네이터 2:오리지널
...