본문 바로가기

코딩 연습/코딩배우기166

[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #5 ■ 파이썬으로 멜론차트 24Hits 리스트 추출하기 멜론차트에서 24Hits의 노래 목록(리스트)별 가수, 앨범과 곡 정보를 추출하는 파이썬 크롤링 코드 24Hits의 URL은 https://www.melon.com/chart/index.htm 이고, 곡 정보의 URL은 https://www.melon.com/song/detail.htm?songId=32978341 import requests from bs4 import BeautifulSoup import re top100_url = 'https://www.melon.com/chart/index.htm' headers = { 'Referer': 'https://www.melon.com/index.htm', 'User-Agent': ('Mozilla/5.. 2020. 10. 21.
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #4 ■ 멜론(Melon)에서 노래 검색하여 앨범명, 곡명, 곡 정보 등을 표시하는 파이썬 크롤링 멜론(Melon)의 검색창에 키워드를 넣으면 자동으로 완성되는 아티스트, 곡, 앨범 목록이 보인다. 이 서비스 목록을 찾기 위해 개발자 도구(F12)를 열어서 Network탭의 All 또는 XHR을 보면 index.json 파일이 있다. 이 중 해당 키워드 관련 파일을 새탭으로 열어보면 요청사항에 대한 응답 내용을 볼 수 있고, 응답 내용을 파이썬에서 파싱해서 원하는 형태로 만들 수 있다. 아래 예제는 '송가인'으로 검색한 결과임 import requests import json #https://www.melon.com/search/keyword/index.json?jscallback=jQuery\ #191053.. 2020. 10. 20.
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #3 ■ 파이썬으로 네이버 블로그 항목들 추출하기 naver.com에서 'askdjango' 검색 후 블로그 섹션 하단의 '블로그더보기' 클릭 해당 URL에 대해 최소 조합 파라미터로 다시 조합 https://search.naver.com/search.naver ? date_from= &date_option=0 &date_to= &dup_remove=1 &nso= &post_blogurl= &post_blogurl_without= &query=askdjango &sm=tab_pge &srchby=all &st=sim &where=post &start=1 # 최소 조합 &query=askdjango &where=post &start=1 ▷ 한 페이지만 추출 해보기 requests, BeautifulSoup, c.. 2020. 10. 18.
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #2 ■ 파이썬 웹 크롤링 실습 - 대표적인 크롤링 예시 3가지 HTML 크롤링 Ajax 렌더링 크롤링 JavaScript 렌더링 크롤링 ▷ 단순 HTML 크롤링 import requests from bs4 import BeautifulSoup url_level1 = 'https://askdjango.github.io/lv1/' html = requests.get(url_level1).text soup = BeautifulSoup(html, 'html.parser') for a_tag in soup.select('#s1_course_list .course > a'): print(a_tag.text, a_tag['href']) ※ BeautifulSoup의 tag는 사전과 유사한 인터페이스를 지원하기 때문에 K.. 2020. 10. 16.
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #1 ■ HTTP 요청 및 응답 웹 요청/응답 처리 시 HTTP 프로토콜의 문자열을 서로 주고 받아야 하며(웹 브라우저의 기능), 크롤링을 위해서 웹브라우저가 아닌 파이썬 라이브러리를 이용해서 요청/응답 처리할 수 있다. ▷ HTTP(S) 요청 방법 및 시기 웹브라우저 접속 시 새로고침 자바스크립트를 통한 요청(예로, Ajax) 앱 API HTML Form 전송 ▷ HTTP 메서드(패킷을 어떻게 구성하느냐의 차이) GET : 리소스 요청(조회) POST : 리소스 추가, 수정, 삭제 목적(파일 업로드) PUT: : 리소스 수정 요청 DELETE : 리소스 삭제 요청 HEAD : 헤더 정보만 요청, 해당 자원 존재 여부 확인 목적 OPTIONS : 웹서버 지원 메서드 종류 반환 요청 TRACE : 클라이언트 요.. 2020. 10. 15.
[python] 파이썬 알고리즘 - 별표 찍기 #모양 1 * ** *** **** ***** for i in range(1, 6): for j in range(1, i + 1): print('*', end = '') print() # 또는 for i in range(1, 6): print('*' * i) #모양 2 ***** **** *** ** * for i in range(1, 6): for j in range(1,7 - i): print('*', end = '') print() # 또는 for i in range(5, 0, -1): print('*' * i) #모양 3 * ** *** **** ***** for i in range(1, 6): for j in range(1, 6 - i): print(' ', end = '') for k in r.. 2020. 10. 14.
[python] 파이썬 파일 처리 - 명령 프롬프트에서 파일명 읽어 실행하기 ■ 명령 프롬프트나 터미널창에서 처리할 파일명을 읽어서 실행하기 (sys모듈 import) sys 모듈을 통해, 리스트 형식의 argv 변수를 사용할 수 있는데, 명령줄 인수(command-line argument)들로 구성된 리스트(argv[n])를 파이썬 스크립트로 가져온다. argv[0]은 스크립트 이름이고, argv[1]은 명령 줄을 통해 전달된 첫 번째 인수이다. import sys input_file = sys.argv[1] with open(input_file, 'r', newline='') as filereader: for row in filereader: print(row.strip()) # sys.argv 리스트로 읽을 파일의 주소를 얻어 변수 input_file에 할당 # open 함.. 2020. 10. 11.
[python] 파이썬 예외처리 ■ 파이썬의 예외처리와 기본적인 예외들 IOError, IndexError, KeyError, NameError, SystaxError, TypeError, UnicodeError, ValueError def getMean(numValues): result = [n for n in numValues if n % 2 == 0] return sum(result) / len(result) my_list = [] #print(getMean(my_list)) # 에러 발생 # ZeroDivisionError: division by zero ☞ try ~ except 예외처리 try: print(getMean(my_list)) except ZeroDivisionError as detail: print(detail).. 2020. 10. 11.
[python] 파이썬 데이터 분석 입문 - 리스트, 튜플, 딕셔너리 ■ 리스트, 튜플, 딕셔너리 관련 함수 등 정리 a = [2, 4, 6] a.append(8) print(a) # [2, 4, 6, 8] --> 요소 추가 a.extend([10, 12]) print(a) # [2, 4, 6, 8, 10, 12] --> 리스트 확장 b = a.pop() print(a, ' : ', b) # [2, 4, 6, 8, 10] : 12 --> 삭제 및 삭제 값 반환 b = a.pop(1) print(a, ' : ', b) # [2, 6, 8, 10] : 4 --> index 지정 삭제 가능 a.remove(10) print(a) # [2, 6, 8] --> 삭제할 요소(값) 지정하여 삭제 ■ reverse() 함수는 기존(원본) 리스트를 반전시킴. 기존 리스트를 변경하지 않으려.. 2020. 10. 9.
[python] dict 연습 - 단어(문장)에서 모음 찾기 ■ [dict 연습] 단어, 문장에서 영어 모음 찾기 vowels = ['a', 'e', 'i', 'o', 'u'] word = input('Provides a word to search for vowels: ') found = [] found_dict = {} for kv in vowels: found_dict[kv] = 0 # dict 0으로 초기화 for letter in word: if letter in vowels: if letter not in found: # found list에 철자가 없으면 found.append(letter) found_dict[letter] += 1 # 철자 맞으면 1 증가 # 입력한 단어, 문장의 모음 리스트 print( 'vowels in the word that .. 2020. 10. 8.