python 으로 scrapper를 만들어볼려고 한다. 키워드를 타이핑 하면 그와 관련된 직업을 3가지 웹사이트에서 가져와 정리해서 출력해주는 앱을 만들려고 한다.
그전에, 간단하게 알아야 할 문법을 설명하고 초기 세팅을 하려고 한다.
이미 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 으로 인해 함수가 종료되므로.
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 문이든 변수를 지정할 때든 어디서든 사용 가능한 것 같다.
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 라고 하면 더하고 아니면 아무것도 저장하지 마라' 는 뜻이다.
웹 url 을 파이썬으로 긁어오면 파이썬이 그 웹안에 있는 코드를 전부 출력하는 module 이 있다. requests 라는 module 이다.
built-in 이 아니라서 외부에서 따로 다운받아야 한다. 우선 아래의 링크에 접속하자.
웹에서 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 하는 방법을 더 자세히 알아보자.