Challenge 04는 아래와 같습니다.
삽질의 외국버전인가요? 의미하는 바가 있을 것 같습니다.
웹 페이지의 소스를 보면 삽질을 하지 말라는 것 같습니다. 지식인 답게 urllib를 이용하라고 하면서 이미지에 링크가 걸려있는 것을 확인할 수 있습니다.
이미지를 클릭하면 "and the next nothing is 44827"이 나오고 url에서 nothing 파라미터에 해당 숫자를 입력하면 또 다른 "nothing is XXX"가 나오는 것을 확인 할 수 있습니다.
urlparse를 이용하여 자동으로 url을 입력해보겠습니다. (참고, 2.x 버전에서는 request 없이 사용 가능)
- urlparse : url을 분해, 변경하는 모듈
[참고] 위 코드에서 모듈을 불러오는 2가지 방법을 사용하였습니다.
이 방법의 차이는 모듈을 사용할 때 나타납니다. 첫번째 방법에서는 모듈을 사용할때, 모듈이름.모듈함수 이런식으로 사용해야 하지만 두번째 방법에서는 모듈함수만 적어주면 모듈을 사용할 수 있습니다. 두번째 방법이 코드가 간격하게 나와 더 편리해 보입니다. |
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 |