[리원아빠] 파이썬 urlib 패키지 url 분석 수정

2023. 1. 5. 09:41Python

반응형

 


파이썬 urllib 패키지로 url 분석 수정하기



 

파이썬의 대표적인 기능 중 하나가 웹페이지 크롤링이다.

 

bs 패키지를 사용하면 아주 간단하게 웹페이지를 크롤링할 수 있지만

 

보다 자세히 심도있게 크롤링을 하기 위해서는 url에 대한 분석과 수정도 필요하다.

 

이번 포스팅에서는 파이썬에서 제공하는 urllib 패키지를 통해 url을 어떻게 분석하고 수정하는지 알아보자.

 

 

먼저 urllib 패키지에서 가장 빈번하게 사용되는 패키지들이다.

 

이외에도 수십가지의 패키지들이 존재하지만 맛보기식으로 간략하게 알아보도록 하자.

 

  • unquote => url 주소를 한글로 변환해준다
  • urlparse => url의 구성 정보를 딕셔너리형태로 분리해준다. 
  • parse_qs, parse_qsl => url중 query 형태로 입력되는 값을 추출해준다. 리턴 오브젝트 형태에 따라 선택할 수 있다.
  • urlencode => 주어진 문자열을 url로 인식되도록 인코딩 해준다.
  • urlunparse => 딕셔너리형태로 분석된 url을 다시 원래의 형태의 url로 합성해준다.

 

 

먼저 unquote 함수이다.

 

해당 함수는 위의 이미지처럼 아스키코드로 변환된 url을 다시 한글 주소로 변환해준다.

 

알수없는 url을 한글로 변환하니 직관적으로 어떤 사이트인지 좀 더 쉽게 이해가 된다.

 

 

urlparse 함수 경우 주어진 urld을 6부분으로 나누어 분석해 준다.

 

6부분은 scheme, netloc, path, params, query 인데 우리가 가장 많이 사용하게 될 부분은 query 항목이다.

 

일단 urlparse 함수는 주어진 url을 6가지 부분으로 나누어 딕셔너리 형태로 반환해 준다는 사실을 기억하자.

 

 

parse_qs 함수와 parse_qsl 함수는 모두 url의 쿼리 부분만 추출해서 리턴하는 함수이다.

 

다만 이름에서 차이가 있듯이 parse_qs 함수는 리턴값을 딕셔너리 형태로

 

parse_qsl 함수는 리턴값을 리스트로 반환한다.

 

추가로 parse_qsl 함수는 리스트로 반환을 하지만 리스트안의 요소들은 튜플로 되어 있다.

 

 

url에서 추출한 쿼리부분은 특정 항목값만을 수정할 수 있다.

 

예를 들어 작성자는 추출된 url의 쿼리 부분 중 keyword로 전달되는 값을 수정했다.

 

parse_qsl 함수로 쿼리 부분을 추출했다면 리스트안의 값들이 튜플이라 변경이 불가능하지만

 

parse_qsl 함수로 쿼리 부분을 추출했다면 딕셔녀리 오브젝트이므로 값 수정이 가능하다.

 

 

 

기존 url을 변경하기 위해서는 위처럼 parse된 url을 다시 replace 함수로 변경하며 

 

해당 인자값으로는 변경된 쿼리 부분을 가지고 있는 딕셔너리를 전달해야한다.

 

그 후 다시 urlunparse 함수를 통해 6가지 나누어져있는 형태를 합쳐야 한다.

 

다소 복잡하기는 하지만 기본 원리만 알고 있다면 쉽게 적용할 수 있다.

 

쿼리 부분을 수정하고 기존 url과 새로운 url을 다시 출력해 봤다.

 

작성자가 수정을 했던 쿼리 부분 중 keyword 값이 정상적으로 변경된 것을 확인 할 수 있다.

 

웹크롤링을 하는데 있어 이런 함수 사용방법을 알고있다면 그 효율성은 배가 될 것이다.

 

그럼 끝.

반응형