SW
openpyxl 본문
In [138]:
from IPython.core.display import display, HTML
display(HTML("<style> .container{width:90% !important;}</style>"))
In [79]:
!pip install openpyxl
In [80]:
from openpyxl import Workbook # 파일 새로 만들 때
from openpyxl import load_workbook # 파일을 읽을 때
In [81]:
# 1. 워크북을 만든다.
wb = Workbook()
# 2. 워크 시트를 만든다.
ws = wb.active
In [14]:
# format_string
# 양식문자열
# 1. .format 메서드
# 2. % 문법
# 3. f 문자열
# 양식문자열 만드는 순서
# 1. 예시문자여 만들기
# 2. 데이터 자리 만들기
keyword = "겨울왕국2"
numbers = 122313123.21323
format_string = f"{keyword:@^10} - 기사 목록({numbers:5.2f})"
print(format_string)
In [ ]:
# 웹 페이지 : html, css, js
# html : 형태, 레이아웃, 컨텐츠
# 태그(tag) : container, empty
# <span>내용</span> : 태그 안에 다른 태그나 내용을 담을 수 있다, containter
# <img src="그림파일주소"> : 태그 단독 존재, empty
# <tagName 속성명="속성값" 속성명2="속성값2"></tagName>
# 속성 : id, class
# <span class="name_ep_title"> : 별명, 그룹명
# <p id="News_title"> : 주민번호
# css : 화면을 꾸미는 역할
# js : 동적인 부분을 담당, 새로운 데이터 불러오기
In [1]:
import requests
In [2]:
from bs4 import BeautifulSoup
In [7]:
keyword = input()
url = f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={keyword}"
In [8]:
requests.get(url)
# http method
# 어떤 의도를 가지고 접근할 것인가?
# get : 정보를 얻어올 때 - 대부분의 주소치고 접근하는 페이지
# post: 정보를 전달할 때 - 회원가입, 글쓰기, 로그인, 결제
# head: 헤더 정보만 가지고 온다.
# options : 해당 페이지가 어떤 메서드를 지원하느냐?
# put : 자료를 업로드 할 때
# patch : 자료를 업로드 할 때 - 수정
# delete : 글 지울 때
Out[8]:
In [110]:
url = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EB%A7%A8%EC%9C%A0+%EB%A7%A8%EC%8B%9C%ED%8B%B0"
req = requests.get(url)
if req.status_code != requests.codes.ok:
print("접속실패")
exit()
# 내용 파악
html = BeautifulSoup(req.text, "html.parser")
In [111]:
# 기사 제목, 링크, 요약, 언론사 이름
news_items = html.select('#sp_nws_all1')
for item in news_items:
print(item.text)
b = item.a.attrs['href']
print(b)
title = item.select_one('a._sp_each_title')
link = title.attrs['href']
description = item.select('')
#print(description)
n_company = item.select_one('._sp_each_source')
print(title.text, link, description.text, n_company.text)
"""
selector
1. 단일
- 태그이름 : a
- id : #a
- class : .a
2. 복합
- a._sp_each_title //태그 이름 나온 후 class 나와야 함. 순차적이어야 함
- a > p > div > .sp_each_title //중간 경로 생략 불가(빠름)
- a p div .sp_each_title //중간 경로 생략 가능(덜빠름)
"""
Out[111]:
In [135]:
# 1. 워크북을 만든다.
wb = Workbook()
# 2. 워크 시트를 만든다.
ws = wb.active
url = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EB%A7%A8%EC%9C%A0+%EB%A7%A8%EC%8B%9C%ED%8B%B0"
req = requests.get(url)
if req.status_code != requests.codes.ok:
print("접속실패")
exit()
# 내용 파악
html = BeautifulSoup(req.text, "html.parser")
news_items = html.select("ul.type01 > li")
for row_num, item in enumerate(news_items, start=1):
title = item.select_one('a._sp_each_title')
print(title.text)
#기사의 링크 주소를 찾아서 출력
link = title.attrs['href']
description = item.select('dd')[1]
print(description.text)
n_company = item.select_one('._sp_each_source')
if n_company.select_one('i'):
n_company.select_one('i').decompose()
print(title.text, link, description.text, n_company.text)
ws.append([row_num,
title.text,
link,
description.text,
n_company.text])
In [136]:
wb.save("navernews.xlsx")
In [64]:
# 리스트, 딕셔너리, 튜플, 셋
# 문자열, 리스트, 튜플 - 순서가 있는 형태
# 딕셔너리, 셋
# 만들기, 값 읽기, 변경, 추가, 삭제, 유틸리티
# 리스트
test_list = list()
test_iist = []
test_list = [1,2,3,4,5,3.14,"hi","hello"]
test_list[-1] # index - 순번 - 순서번호
test_list.append(99)
test_list.insert(5, 1024)
len(test_list)
# test_list.sort() # 숫자로 된 원본을 정렬
test_list.count(1) # 중복 요소의 개수
Out[64]:
In [59]:
test_list
Out[59]:
In [70]:
numbers = []
# 1개를 처리하는 구문 작성
while True:
number = input("정수 : ")
if not number:
break
number = int(number)
numbers.append(number)
# total = sum(numbers)
total = 0
for number in numbers:
total += number
print("sum : ", total)
In [ ]:
url = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EB%A7%A8%EC%9C%A0+%EB%A7%A8%EC%8B%9C%ED%8B%B0"
req = requests.get(url)
if req.status_code != requests.codes.ok:
print("접속실패")
exit()
# 내용 파악
html = BeautifulSoup(req.text, "html.parser")
In [ ]:
# 함수 만들기
# 함수는 사용자 정의 명령
# 함수 -> y = f(x)
# 입력 -> 처리 -> 출력이 있는 블랙박스
"""
처리
입력 - 처리
처리 - 출력
입력 -처리 -출력
함수에서 입력 : 매개변수 - 옵션
함수에서 출력 : 반환값 - 처리한 결과
"""
In [114]:
def test():
print("hi")
print("hello")
print('WEfw')
In [115]:
test()
In [116]:
def test(count, name="philip", age=33):
print(count, name, age*3)
return 33
In [120]:
result = test(3, "jak3", 90)
In [121]:
print(result)
In [126]:
def add(num1, num2):
return num1 + num2
In [127]:
add(3,5)
Out[127]:
In [128]:
print(add(3, 5))
'대학교 > Data' 카테고리의 다른 글
matplotlib (0) | 2020.02.01 |
---|---|
Kaggle [Titanic Data Analysis] (0) | 2020.02.01 |
json (0) | 2020.01.30 |
pandas (0) | 2020.01.30 |
Beautifulsoup (0) | 2020.01.30 |
Comments