https://youtu.be/kiowbtjDrWo?si=cGlSfRu7BfQ78ue2
시청 후 해보는 것
본 영상에서는 파이썬의 requests 라이브러리를 사용해 크롤링한다.
import requests <-- get 방식으로 코드를 긁어온다--> r = requests.get("http://www.dowellcomputer.com/main.jsp") <-- 긁어온 놈의 텍스트부분만 빼먹는다--> html = r.text print(html)
보다시피 text 부분인 html이 잘 출력되었다.
하지만 모조리 긁어오면 활용할 수 가 없다.
그래서 바로 파싱이란 것을 한다!
html의 태그를 기준으로 내용을 긁어오는 것이 파싱!!
이번에는 BeautifulSoup라는 라이브러리를 사용한다.
아까 코드에 이어 진행하겠다.
import requests from bs4 import BeautifulSoup <-- get 방식으로 코드를 긁어온다--> r = requests.get("http://www.dowellcomputer.com/main.jsp") <-- 긁어온 놈의 텍스트부분만 빼먹는다--> html = r.text <--html 코드를 파이썬 코드로 변환한다--> soup = BeautifulSoup(html, 'html.parser') <-- 변환된 코드에서 td의 자식 a를 데려간다--> links = soup.select('td > a') for link in links: <--만약 href속성을 지니고 있다면--> if link.has_attr('href'): <--만약 href의 값으로 notice라는 문자열이 포함되어있다면--> if link.get('href').find('notice') != -1: print(link.text)
문제 발생
그런데 코드는 영상과 같은데 제대로 실행이 안된다.
영상에서는 최근 공지사항을 크롤링해오는데 영상이 5년전이다보니 내가 하는 이 시점에 공지사항이 비어져있었다.
그래서 나는 최근 강의를 크롤링해오기로 했다.
먼저 사이트의 소스코드를 확인했다.
아니 이 형태는 아까 내가 크롤링해온 소스코드와 비슷한 형태란 걸 바로 확인 할 수 있었다.
import requests from bs4 import BeautifulSoup <-- get 방식으로 코드를 긁어온다--> r = requests.get("http://www.dowellcomputer.com/main.jsp") <-- 긁어온 놈의 텍스트부분만 빼먹는다--> html = r.text <--html 코드를 파이썬 코드로 변환한다--> soup = BeautifulSoup(html, 'html.parser') <-- 변환된 코드에서 td의 자식 a를 데려간다--> links = soup.select('td > a') for link in links: <--만약 href속성을 지니고 있다면--> if link.has_attr('href'): <--만약 href의 값으로 study라는 문자열이 포함되어있다면--> if link.get('href').find('study') != -1: print(link.text)
코드에서 notice부분을 study로 바꾸니 바로 해결되었다.
최근 강의의 제목을 잘 불러온다.