목표:
파이썬으로 웹사이트를 읽어오는 프로그램을 만들려고 합니다.
인터넷 검색을 해보니 urllib.request 모듈이 필요하다고 하는데.
urllib.request 모듈이 뭔데?
url을 열어주는 함수와 클래스가 있다고.
자세한 내용은 여기 있는데 죄다 영어다. 봐도 모르겠고만. 일단 패스!
urllib.request.html
urllib.request 라이브러리 설치.
했다고 치고.
어떻게 여는데?
urllib.request.urlopen('열고 싶은 홈페이지 주소')
쉽네.
작전은 나왔다.
# 웹사이트를 열어주는 모쥴을 가져온다.
# 열고 싶은 웹사이트(다음웹사이트대문이다)를 적어둔다.
# 웹사이트를 연다.
# 화면에 보여준다.
파이썬 프로그램을 만들어보자.
# 웹사이트를 열어주는 모쥴을 가져온다.
import urllib.request
# 열고 싶은 웹사이트(다음웹사이트대문이다)를 적어둔다.
url = 'http://www.daum.net/'
# 웹사이트를 연다.
f = urllib.request.urlopen(url)
# 화면에 보여준다.
print(f)
끝

화면에 출력을 해달라고 했더니 이게 뭔일이여?
<http.client.HTTPResponse object at 0x02A5CD30>
클래스는 뭐고 오브젝트는 또 뭐여? 클래스와 오브젝트
오브젝트가 0x02A5CD30에 있다는 것은 또 무슨 의미여?
내가 원한 결과는 이런게 아닌데.
...
다음홈페이지 대문 사이트를 읽어왔는데, 그 객체를 저장한 메모리값이 들어 있는가 봅니다.
파일처럼 바이트로 읽어와서 출력해보기로 했습니다.

결과는 아래에.

일단 내용을 출력하는데는 성공한 것 같습니다.
그러나 너무 길어서 앞부분이 짤려 나갔고, 한글이 안보이고, 읽기가 어렵게 붙어있습니다.
...
무슨 일을 한 것인가 생각해본 결과 다음과 같은 결론을 얻었습니다.
urllib.request.urlopen() 이라는 매서드는
http.client.HTTPResponse 클래스 형태의 오브젝트의 메모리 번지수를 f에 주었고,
http.client.HTTPResponse 클래스의 read() 매서드를 이용하여 바이트단위로 읽어와서
print() 로 출력하였습니다.
한글이 안보입니다. 다음 대문을 읽어왔는데 한글이 안보인다니 참.
오늘은 여기까지.
...
다른 방법을 찾아보았습니다.
>>> import requests
>>> url = 'http://cafe.daum.net/koreamedicina'
>>> r = requests.get(url)
>>> print(r.text)
결과