본문 바로가기

WarGame/PythonChallenge

Python Challenge 04 :: urlparse

Challenge 04는 아래와 같습니다.



삽질의 외국버전인가요? 의미하는 바가 있을 것 같습니다.


웹 페이지의 소스를 보면 삽질을 하지 말라는 것 같습니다. 지식인 답게 urllib를 이용하라고 하면서 이미지에 링크가 걸려있는 것을 확인할 수 있습니다.

이미지를 클릭하면 "and the next nothing is 44827"이 나오고 url에서 nothing 파라미터에 해당 숫자를 입력하면 또 다른 "nothing is XXX"가 나오는 것을 확인 할 수 있습니다.


urlparse를 이용하여 자동으로 url을 입력해보겠습니다. (참고, 2.x 버전에서는 request 없이 사용 가능)


  • urlparse : url을 분해, 변경하는 모듈
[참고] 위 코드에서 모듈을 불러오는 2가지 방법을 사용하였습니다.
  • 첫번째 방법 : [ import 모듈 이름 ]
  • 두번째 방법 : [ from 모듈 이름 import 모듈 함수 ]

이 방법의 차이는 모듈을 사용할 때 나타납니다. 첫번째 방법에서는 모듈을 사용할때, 모듈이름.모듈함수 이런식으로 사용해야 하지만 두번째 방법에서는 모듈함수만 적어주면 모듈을 사용할 수 있습니다. 두번째 방법이 코드가 간격하게 나와 더 편리해 보입니다.


urlparse를 이용해서 nothing 파라미터에 해당 숫자를 반복적으로 대입하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
from urllib.parse import urlparse
from urllib.request import urlopen 
 
digit = '12345' 
 
while digit.isdigit():    
    url_parse = urlparse("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=" + digit)   
    src = urlopen(url_parse.geturl()).read()    
    digit = src.split()[-1].decode()    
    print(src)
 
cs
  • geturl() : 전체 url을 가져옴
urlopen().read()를 통하여 소스를 가져오면 byte 형식으로 나오므로 decode()를 통해 문자열로 변환해야 합니다.


'WarGame > PythonChallenge' 카테고리의 다른 글

Python Challenge 06 :: zipfile  (0) 2015.10.26
Python Challenge 05 :: pickle  (0) 2015.10.23
Python Challenge 03 :: urlopen, re.findall  (0) 2015.10.22
Python Challenge 02 :: count  (0) 2015.10.22
Python Challenge 01 :: maketrans  (1) 2015.10.21