파이썬 스크래퍼 시작!(feat, 니코짱)

YEONGHUN KO·2021년 11월 15일
0

PYTHON - SCRAPPER

목록 보기
1/17
post-thumbnail

1. 프로젝트 소개

python 으로 scrapper를 만들어볼려고 한다. 키워드를 타이핑 하면 그와 관련된 직업을 3가지 웹사이트에서 가져와 정리해서 출력해주는 앱을 만들려고 한다.

그전에, 간단하게 알아야 할 문법을 설명하고 초기 세팅을 하려고 한다.

2. return 과 print의 차이

이미 Coursera 로 기초 문법은 거의 다 배웠으니 모르는 부분만 뽑아서 정리해보려고 한다. return은 희한하게 coursera 에서는 잘 사용하지 않아서 개념이 안 잡혀있다. 차이를 쉽게 설명하자면 print는 결과값을 보여주기만 할뿐 그 값을 저장하진 않는다. return은 결과값을 보여주진 않지만 저장한다. 역시 코드를 통해 살펴보자.

# 1. function return
def p_plus (a,b):
    print (a + b)

def r_plus (a,b):
    return a + b

p_result = p_plus(2 , 3)
r_result = r_plus(2 , 3)

print(p_result, r_result)

def k_print(a,b):
    return a + b
    print("it isn't shown")



# it gives us back None,5
# because When p_plus ran, it automatically printed to the console value of "a + b". 
# However, the value stored in the function "p_plus" is None because that function had no return statement.
# When r_plus ran, it did not print anything to the console. 
# However, it did return a value, and that value was stored in r_plus. (CodeAcademy)
# 그렇다! 맨위의 두 함수(p_plus, r_plus)에다가 인자를 넣고 변수에 지정한다음 두 변수를 프린트 했을때 p_result 는 none 이 되고 r_result 는 #   5가 된다. 그래서 함수를 마지막에 함수를 닫는 다는 생각으로 return을 써주는 것을 잊지말자!

r_k_print = k_print(4,2)
print(r_k_print)

# k_print 안에 있는 print statement는 실행되지 않는다 왜냐면 return이 실행되고 난뒤에 함수가 종료되므로. 여기서 알 수 있는건 print statement 는 return으로 인해 저장된
# value 값을 우리에게 보여줄때 사용된다는 것이다.

k_print(4,2) # 따라서 이렇게 입력하면 나오는게 없음. print statement 가 없고 return 으로 인해 함수가 종료되므로.

3. f-string formatting

python3 들어오면서 생긴 새로운 기능이다. 임시로 정한 값을 자유자재로 대입 할 수 있다는 굉장한 장점을 가지고 있다. 아래 코드를 보자.

# 2. f-string formatting.

def say_Hello(name, age, country, fav_food):
    return f"Hello {name} you are {age} years old and you are from {country} and you like {fav_food}"

re = say_Hello(name = "young", country = "korea", fav_food = "pizza", age = "23")

print(re)

# argument 를 대입하려면 쌍따옴표 앞에 f 를 붙이고 argument를 중괄호로 감싸면 됨.
# 그리고 parameter 를 대입할때 순서가 헷갈릴 수 있으니 argument = parameter 라고 하면 순서 상관없이 argument를 입력할 수 있음.
# 또한, f-string은 print 문이든 변수를 지정할 때든 어디서든 사용 가능한 것 같다.

4. conditional

if 문에 조건을 여러개 달 수 있다. 아래의 코드를 살펴보자.

# 3.  conditional part one

def plus (a,b):
    if type(a) is int or type(a) is float or type(b) is int or type(b) is flaot :
        return a + b
    else:
        return None

re = plus(5.4,1.2)
print(re)

# if 문안에 조건을 여러개 이어 붙일 수도 있다. 문법은 영어로 말할 때랑 매우 비슷해서 알아듣기 쉽다.
# '인자(a,b) 가 정수이거나 float 라고 하면 더하고 아니면 아무것도 저장하지 마라' 는 뜻이다.

5. 웹사이트에서 html 코드 가져오기

웹 url 을 파이썬으로 긁어오면 파이썬이 그 웹안에 있는 코드를 전부 출력하는 module 이 있다. requests 라는 module 이다.

built-in 이 아니라서 외부에서 따로 다운받아야 한다. 우선 아래의 링크에 접속하자.

requests 다운받기

웹에서 zip파일을 다운받고 압출을 풀자. 그리고 터미널로 그 폴더까지 찾아간다음 아래의 명령어를 입력하여 requests module을 설치하자.

python -m pip install requests

그럼 파이썬에서 사용할 준비가 되었다는 뜻이다. 그리고 아래의 코드를 살펴보자.

그리고 beautifulSoup 라는 module도 있으니 이것도 위와 같은 방법으로 검색해서 다운받아주자.(coursera 에서 수업받을때 이미 다운받았다.)

import requests # requests 함수는 따로 다운받아야한다.
from bs4 import BeautifulSoup 

result = requests.get('https://www.indeed.com/jobs?q=Python&l=Silicon+Valley%2C+CA')

print(result.text) # 이렇게 하면 위의 링크된 웹사이트에 있는 모든 html 코드를 가져오게 된다.

이렇게 해서 웹페이지 scrapping 준비는 다 끝났다. 그럼 다음글에서 scrapping 하는 방법을 더 자세히 알아보자.

profile
'과연 이게 최선일까?' 끊임없이 생각하기

0개의 댓글