일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 시각화
- Join
- 인턴10
- seaborn
- GIS
- GNN
- intern10
- SQL
- 파이썬
- BFS
- DP
- 멋사
- paper review
- Python
- likelionlikelion
- ux·ui디자인
- 멋쟁이사자처럼
- 마이온
- parklab
- 멋재이사자처럼
- 프로젝트
- folium
- likelion
- 그리디
- TiL
- 마이온컴퍼니
- graphrag
- 알고리즘
- Rag
- DFS
- Today
- Total
지금은마라톤중
멋사 AI스쿨 TIL - (2) 본문
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 |