zenn.skin 무료버전 배포중!
자세히보기

Python 55

Python/Syntax
[Python] 한 줄에 두 개의 정수 입력 받기 (input, map)

C나 C++에서는 변수형을 미리 알려주고 'scanf' 함수나 '>>' 연산자를 사용해 연속해서 변수를 입력받을 수 있다. 하지만 파이썬의 경우는 input으로 값을 입력받으면 str타입으로 입력 받게 되고 따로 정수로 형변환을 시켜주어야 한다. x, y = input('두 개의 값을 입력: ').split() print(type(x), type(y)) print(x+y) x와 y를 입력받고 둘을 더하고 싶다면, 각 변수를 정수형으로 변환시킨 후 더해주어야 한다. x, y = input('두 개의 값을 입력: ').split() x = int(x) y = int(y) print(x+y) 이 때, map함수를 사용하면 x와 y를 정수형으로 바꿔주는 과정을 줄여줄 수 있다. 함수 하나와 리스트 하나를 입력받..

Python/Syntax
[Python] split

split은 string의 함수로 주어진 문자를 기준으로 string을 나누어 리스트를 반환한다 default는 'white space'로 아무것도 주어지지 않으면 띄어쓰기를 기준으로 나눈다 기준 문자는 리스트에 포함되지 않는다 test ='''This is a test text''' print(test.split()) * 1을 인자로 받은 경우 test ='''This1is1a1test1text''' print(test.split('1')) * split을 이용하면 한 번에 여러 문자를 입력받아 초기화 시킬 수 있다 x, y = input('두 개의 문자를 입력하세요: ').split() print(x) print(y) 여러 개의 변수를 초기화하는 방법 이외에도 split을 이용하면 웹문서를 파싱할 때..

Python/Syntax
[Python] 가상환경 설정

최근 아나콘다, VS Code, IDLE 개발환경을 이것저것 사용하다 보니 라이브러리 경로 설정도 헷갈려 이리저리 헤매게 되고, 버전 관리의 필요성을 느끼게 되었다. 원래는 따로 가상 환경을 설정해서 사용하지 않았지만 지금부터라도 별도의 가상 환경을 설정해보려 한다. 1. 가상환경 설정 먼저 터미널에 들어가서 가상 환경을 만들 폴더로 이동한다 다음으로 파이썬 가상환경 생성 명령어를 이용해 가상 환경을 만든다 python -m venv python_virtual_env python_virtual_env는 자기가 설정할 가상환경의 이름으로 바꾸어 적어주면 된다 python2.0이 깔려 있는 경우 명시적으로 python3을 적어주어야 한다 python3 -m venv python_virtual_env 폴더를 ..

Python/Web Scraping
[웹크롤링] Twitter API를 이용해 Twitter에 글 남기기

1. Access Token 저번에 만든 Twitter 트위터 애플리케이션에 들어가서 Access Token을 발급받는다. 저번에 발급받은 키처럼 Secret Access Token은 외부에 노출되어선 안된다. 노출될 경우 Regenerate을 눌러 다시 발급받자 2. Twitter API를 이용해 Twitter에 글 남기기 1) 쓰기 권한 변경 저번에 만든 프로젝트에서 쓰기 권한을 활성화시켜 주어야 한다. 개발자 홈페이지 > Project > Settings > App permissions 으로 들어간다 Read and Write 또는 Read + Write + Direct Messages로 바꾸어 준다(쓰기 권한이 필요) 2) Token과 key 재발급 앱 권한을 변경한 다음에는 Token과 key를..

Python/Web Scraping
[웹크롤링] HTTPError, AttributeError, URLError

크롤링을 하다보면 페이지나 url이 존재하지 않거나 서버가 존재하지 않는 상황이 많이 생긴다. 이때 미리 예외처리를 해놓지 않으면 오랜 시간 프로그램을 돌리고 원하는 결과를 얻지 못할 수 있다. 다음과 같은 문제가 발생할 수 있다. 1) 페이지를 찾지 못하는 경우와 2) 태그가 없는 경우, 3) 서버를 찾지 못하는 경우이다. 1) HTTPError HTTPError는 서버에 접속은 성공했으나 해당 페이지를 찾지 못할 때 발생한다 from urllib.request import urlopen from urllib.request import HTTPError from bs4 import BeautifulSoup try: page = urlopen('https://koosco.tistory.com/error...

Python/Web Scraping
[웹크롤링] Twitter API Key 발급 받기

1. Twitter 대중적인 sns 중 하나인 트위터 API를 이용해 크롤링해 보려 한다. 트위터는 한국에서는 대중적인 sns는 아니므로 트위터에서의 정보를 직접 활용하기보다는 API를 어떻게 이용하고 크롤링할 수 있는지에 대해 공부해보려 한다. 2. Twitter API twython, twitter 이외에도 여러 트위터 관련 라이브러리가 있지만 twitter 라이브러리를 이용할 것이다. 먼저 서드파티 라이브러리이므로 추가적인 설치가 필요하다. pip install twitter 트위터 API는 15분간 15번 호출이 가능하며 전체 데이터가 아닌 일부 데이터만 사용가능하다는 제한이 있다. 별도로 프리미엄API를 판매하고 있다. 여기서는 이용하는 방법이 중점이므로 생략.. 3. Twitter Key 1)..

Python/Web Scraping
[웹크롤링] 미국 하의원의 홈페이지 링크 저장하기

Beautifulsoup와 urllib 모듈을 이용해 'https://www.house.gov/representatives' 홈페이지에 있는 주소를 저장해 보자 1. 페이지의 HTML 콘텐츠 획득 HTML 문서를 불러오고 파싱을 하기 위해, urllib와 bs4 모듈을 import 한다 urlopen을 이용해 HTML 문서 내용을 불러오고 BeautifulSoup 객체를 생성한다 from bs4 import BeautifulSoup from urllib.request import urlopen url = urlopen('https://www.house.gov/representatives') bsObj = BeautifulSoup(url.read(), 'html.parser') 2. 링크의 추출 all_u..

Python/Syntax
정규표현식(Regular Expression, regex)

1. 정규표현식이란? - 정규표현식은 특정한 조건의 문자를 검색하거나 치환하는 과정을 간단하게 할 수 있도록 도와준다. 처음 보면 익숙하지 않은 문법에 당황할 수 있고, 직접 정규표현식을 작성하더라도 나중에 다시 보면 내가 짠 정규표현식을 이해하기 어려울 때도 있다... 하지만 문자열 처리를 할 때는 없어서는 안 되는 꼭 필요한 형식 언어이다:) - 웹 프로그래밍을 할 때, url을 동적으로 지정할 때도 사용되며 웹 크롤링에서 파싱할 때도 항상 사용된다. 문자열이 많이 사용되는 웹 프로그래밍 관련 부분에서는 정규표현식이 없으면 문자열 처리가 매우 복잡해지므로 필수적으로 사용된다 - 대문자와 소문자를 구분하며 뛰어 쓰기를 구분한다 2. 메타 문자 - 정규표현식에서 특수한 의미를 갖는 특수문자를 메타 문자라..

Python/Syntax
[Python]Sort와 Sorted

-Python에서는 정렬기능을 갖는 sort와 sorted를 제공한다. 1. sort() - sort는 리스트가 갖는 메소드이다 - sort를 사용하면 해당 리스트의 순서가 바뀐다 - 반환값은 없다 - 원본을 유지하면서 별개의 리스트를 만들고 싶을 때는 sorted를 사용한다 - 문자열 리스트의 경우 알파벳 순서로 정렬된다 2. sorted() - sorted는 별도의 함수이다 - 리스트 이외에도 딕셔너리, 튜플에서도 사용 가능하다 - 원본을 유지하면서 별개의 정렬된 객체를 만들고 싶을 때 사용한다 3. reverse - reverse를 True로 하면 역으로 정렬된 결과를 얻을 수 있다