지금은마라톤중

멋사 AI스쿨 TIL - (2) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (2)

달리는중 2022. 12. 23. 17:01

1. crawler : 기는 것, 파충류 -> 웨베 사이트를 기어다니면서 정보를 모아준다.

 

2. web crawling : 크롤러를 사용해 웹 페이지의 데이터를 추출해 내는 행위

 

3. 터미널에 install을 이용해서 설치 가능 ex) pip install requests 

   * requests : 크롤링하기 위해 요청하는 모듈

 

4. 함수 : 자주 사용하는 것을 모아서 사용할 수 있게 해놓은 것,

  ex) 조립기계, construct_machine(green, blue)

 

5. 모듈 : 함수들을 모아놓은 파일, 남들이 만들어놓은 것을 사용 가능, import로 제시해야 사용 가능 ex) requests.

 

6. get 함수 : return 응답값(응답값을 처리 후 돌려준다).

 

7. # : 주석, 코드로 인식하지 않고 코드에 대한 설명을 작성하여 코드이해를 도울 수 있다.

 

8. requests.get(url) -> return : requests.response.

    * [200] : 파이썬에서 보통 성공을 의미.

- 다른 번호대 일때의 의미를 아래 링크에서 확인 가능하다.
  https://restfulapi.net/http-status-codes/

 

9. response로 가져올 수 있는 것 : text, url, content, encoding, headers, json, links, ok, status_code.

 

10. BeautifulSoup(데이터, 파싱방법)

: 가져온 데이터를 기반으로 의미있는 데이터를 만듬, 문자열 덩어리를 모두 떼서 통 안에 정리해 놓는 것.

     ex) BeautifulSoup(response.text, ‘html.parser’)

   *from bs4 import BeatifulSoup : bs4 라는 모듈에서 BeatifulSoup라는 기능을 가져온다.

 

11. type() : list, dict, int, str 등 데이터의 타입을 알려줌.

 

12. BeatifulSoup 기능 : title, tile.string, span, findAll(‘span’) 등 필요한 데이터만 출력

    ex)BeautifulSoup(response.text, 'html.parser')

from bs4 import BeautifulSoup as bs #bs4에서 BeautifulSoup를 임포트하고 bs로 정의
import requests #Requests는 내장 모듈이어서 그냥 임포트 가능

url = requests.get("http://daum.net") 
url.encoding = 'utf-8' #encoding을 안해주면 출력값이 깨져서 이걸 해줘야한다.
soup = bs(url.text, "html.parser") #soup이라는 변수에 bs함수를 사용하여 링크의 문자열을 가져온다.


#가져온 문자열 중에서 headers를 추출하여 출력
print(soup.headers)

13. open(파일, 모드) : 파일을 만듬 / w=write, r=read, a=append

 

14. += : 1씩 증가할 때 간편한 방법

 

15. datetime.today().strftime() : 오늘 날짜를 출력

     *strftime() : 년월일까지만 출력하게 함

 

16. 특정 사이트는 접근이 불가능할 수 있다. -> 크롤링 로봇이 아니라는 코드를 작성해주면 해결 가능

notrobot = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

17. API : Application Programming Interface, 사용자와 서버를 연결시켜주는 것.  

     Open API : 다른사람이 만들어 놓은 API, 누구나 사용 가능   ex)openweathermap

 

18. API key : Open API를 사용하는 사용자를 의미

 

19. API doc : API 사용설명서

 

20. 파라미터 : 함수에서 필요한 재료들

 

21. API 콜한다 : 응답을 원하는 API로 보내는 것

 

22. f-string : 링크 안에 변수를 집어넣음, 문자열 앞에 f 써준다,

      ex) f“####{ @}##{ ^}#” *문자열 안에 변수를 사용하고 싶으면 { } 이용

 

23. json : 기본적으로 제공하는 모듈, 별도 설치 없이 import가 가능, 데이터를 주고 받을 때 사용하는 포맷,

                 dict의 문법을 사용, but 모양만 비슷하지 문자열인 것 주의!

 

24. json.loads(result.text) : 타입을 str -> dict

 

25. 파라미터 추가할 때 &로 연결 

     * lang은 지정할 수 있는 것들이 정해져있음 / en = 영어, kr= 한국어, fr = 프랑스어 등

 

26. googletrans : 언어감지와 번역을 도와주는 Library, ex) from googletrans import Translator

 

27. detect() : Translator()안에 있는 함수, confidence(신뢰도)

      ex) Translator.detect()

     *detected.lang : 입력언어 감지 / result.dest : 번역할 언어

 

28. translate(text, dest, src) : text-내용, dest-번역할 언어, src-text재료(생략이 가능).  

        ex) translator.translate(sentence, “en”).

 

29. SMTP : 서버로 메일을 보내는 것 / IMAP : 서버로부터 메일을 받는 것.

     *SMTP 서버도 주소 있음.

 

30. smtplib : SMTP를 사용하기 위한 lib, 내장lib임.

 

31. smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) : SSL은 아무나 메일에 접근하지 못하게 막아주는 것.

 

32. smtp.login(ID, password) : 로그인 함수, smtp.send_message() : 메일 보냄, smtp.quit() : 종료.

 

33. MIME : 메일내용은 MIME 형태로 만들어 SMTP에 넘겨야 인식함.

     * .email.message 모듈, .EmailMessage 기능.

 

34. message.set_content(): set_content로 메일 내용 적음.

 

35. MIME-Header : “Subject” – 제목, “From” – 발신인, “To” – 수신인

 

36. rb, wb, ab 모드 : binary – JPG,PNG 같은 파일을 컴퓨터가 읽기 편한 형태로 변경하는 것

 

37. read() : 파일을 읽어서 출력 ex) image.read()  

     * with open(“codelion.png”, “rb”) as image : image라는 변수에 파일 열기, close문 없이 파일닫기까지 가능

 

38. add_attachment(파일데이터, maintype = “image”, subtype=image_type) :

 

39. import imghdr : 이미지 확장자 찾아주는 모듈, imghdr.what(파일명, 파일데이터)

 

40. 정규표현식 : 특정 패턴을 통해 유효성 체크

      ex) ^[a-zA-Z0-9.+_-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$.

     * ^(시작), $(끝), [a-zA-Z0-9.+_-], [ ]+는 가 1회 이상 반복, \.(점을 나타냄), {2,3}(앞 조건이 최소 2번에서 최대 3번 반복) 

 

41. import re : 정규표현식 모듈, re.match() : 유효성 검사하는 함수.

 

42. bool() : True or False로 표현되는 함수

 


BeautifulSoup  추가공부

 

-태그속성

HTML 문서를 보면 <> 기호를 활용한 태그가 있다. 추출을 할 때 태그를 뺴고 텍스트만 깔끔하게 출력해서 string을 이용

# p태그를 출력하는데 태그속성 포함하여 출력
print(soup.p)

# p태그를 출력하는데 양옆에 태그속성를 제외하고 텍스트만 출력
print(soup.p.string)

-get_text() 와 string의 차이

 

1) get_text()

get_text는 해당 element에 있는 모든 text를 추출한다.

모든 text를 추출해 하나의 String으로 만든다.

 

2) string

진짜 string만 추출한다.

줄바꿈, 공백 등은 제거된 string만 추출한다.

 

get_text()는 하위 태그의 모든 텍스트를 추출해오고, string은 해당하는 태그에 string이 있으면 그것만 가져온다.

string은 정확한 위치에서 가져오고, 만약 자식 태그가 둘 이상이라면 무엇을 가져와야할지 모르기에 None을 반환한다.

하지만 자식태그가 하나이고, 그 자식 태그에 .string 값이 있으면 해당하는 자식의 string을 추출한다.

 

 

-attrs={"속성" : "내용"}

# class를 속성으로 갖는 것들 중에 지정한 내용을 출력
item_price = soup.find(attrs={"class", "item-price"})
o_price = soup.find(attrs={"class": "o-price"})

 

* Selenium(셀레니움) : BeautifulSoup 외의 크롤링하는 라이브러리

 


 

 

 

추가공부했지만 아직도 좀 어렵다...ㅎㅎ


출처:

https://hi-guten-tag.tistory.com/8  

 

'멋쟁이사자처럼 > Python' 카테고리의 다른 글

멋사 AI스쿨 TIL - (6)  (2) 2023.01.05
멋사 AI스쿨 TIL - (5)  (0) 2023.01.04
멋사 AI스쿨 TIL - (4)  (1) 2023.01.03
멋사 AI스쿨 TIL - (3)  (0) 2023.01.02
멋사 AI스쿨 TIL - (1)  (0) 2022.12.23
Comments