크롤링 하기전에 BeautifulSoup이라는 모듈을 설치해주고, requests 라이브러리도 import한다.
crawling_url = "https://www.billboard.com/charts/hot-100"
req = requests.get(crawling_url)
html = req.text
bs = BeautifulSoup(html, 'html.parser')
* crawling_url이라는 변수를 만들어 크롤링할 주소를 넣어주고,
* requests.get(crawling_url)을 입력해 크롤링할 주소를 불러온다.
* html = req.text로 파이썬이 불러온 내용을 이해할 수 있도록 문자열(str) 객체를 반환한다.
하지만 이 문자열 객체로는 정보추출이 어려움
* BeautifulSoup으로 requests가 반환한 문자열 정보를 파이썬이 쉽게 이해할 수 있는 객체구조로 변환해준다.
- bs = BeautifulSoup(html, 'html.parser')
BeautifulSoup으로 html을 python객체로 파싱한다는 것이고,
두번째 인자에는 어떤 parser를 이용할지 명시
** parsing : 데이터를 조립해 원하는 데이터를 빼내는 것
** parser : parsing을 행하는 프로그램,
원시프로그램(기계어로 변역되기전의 프로그램)의 명령문이나 온라인 명령문, html문서 등에서 markup tag등을 입력으로 받아들여
구문을 해석할 수 있는 단위로 여러부분으로 분활해주는 역할
크롤링 하고 난 후 csv파일로 만들면 깔끔하게 정리돼서 가독성이 좋아진다.
csv_filename_to_wirte = "billboardchart.csv" ## csv파일이름을 정함
csv_open = open(csv_filename_to_wirte, 'w+', encoding='utf-8') # csv파일을 쓰기버전으로 오픈하고 유니코드 8로 지정
csv_writer = csv.writer(csv_open)
csv_writer.writerow( ('rank','song','artist') ) # 들어갈 카테고리 지정
크롤링 할 사이트에 들어가 개발자도구를 열고 내가 데이터를 수집할 자료의 해당 태그를 확인해 태그를 복사한다.
그 후 반복문으로 해당 태그에 들어가있는 문자들을 뽑아낸다.
* find('태그이름')
- 해당되는 태그를 불러온다.(최초 검색결과만 출력)
* find_all('태그이름')
- 해당 모든 태그를 불러온다.
find_all('align="center")
- 속성값을 기준으로 태그를 불러온다.
* re.compile
- re 모듈의 compile 함수는 정규식 패턴을 입력으로 받아들여 정규식 객체를 리턴한다.
re.copile(검색할 문자열)와 같이 함수를 호출하면 정규식 객체를 리턴한다.
** 정규 표현식은 특정한 규칙을 가진 문자열을 표현하는데 사용되는 함수
ex) ., ^, $, *, (), 등등이 있다.
* .string
- 태그하위의 텍스트를 문자열로 객체화해준다. 하위에 텍스트가 없으면 None을 반환
* .text
- 하위 자식태그의 텍스트까지 문자열로 반환시켜준다.
html형식으로 담긴 데이터에서 텍스트정보만 빼와주는 역할을 한다.