긁어오기

박동현·2024년 8월 2일
1
post-thumbnail

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로 바꾸니 바로 해결되었다.

최근 강의의 제목을 잘 불러온다.

profile
"벽은 없다" - 샘 알트만

0개의 댓글