urllib를 이용한 socket communication

joon·2021년 12월 8일
0
post-thumbnail

import socket

파이썬에서 웹소켓 생성을 생성하고 서버와 연결 후 데이터를 주고 받는 방법은 아래와 같다.

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()

import urllib

위 코드를 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

0개의 댓글