파이썬에서 웹소켓 생성을 생성하고 서버와 연결 후 데이터를 주고 받는 방법은 아래와 같다.
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pr4e.org/intro-short.txt HTTP/1.0\n\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if len(data) < 1:
break
print(data.decode())
mysock.close()
위 코드를 urllib를 통해 줄이면 아래 3줄로써 표현 가능하다.
urllib를 통해 socket생성 및 서버와 연결 후 GET요청보내는 모든 과정을 urlopen으로 퉁칠 수 있는게 파이썬 urllib의 장점이라 할 수 있겠다.
import urllib.request, urllib.parse, urllib.error
fhand = urllib.request.urlopen('http://data.pr4e.org/romeo.txt')
for line in fhand:
print(line.decode().strip())
추가예시) urllib와 BeautifulSoup활용한 간단한 웹 크롤링 코드
import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl
# Ignore SSL certificate errors
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
url = input('Enter - ')
html = urllib.request.urlopen(url, context=ctx).read()
# Retrieve all of the anchor tagspy
soup = BeautifulSoup(html, 'html.parser')
tags = soup('a')
for tag in tags:
print(tag.get('href', None))
참고사이트 : www.py4e.com