페이지를 열어보면 We need you to steal data from the Research department. 부분에서
빨간색 부분이 계속 바뀌고, 상자 내부의 Company: N.O.G.N.A 부분이 계속 바뀐다.
위의 두 빨간색 부분을 얻어와서 저장해두고 위의 department라는 이름의 회사의 budget총액을
계산해서 전달하면 된다. 본격적으로 정규표현식을 쓰기 시작했는데 이전의 쳐다보기도 싫은 더러운
코드보다 더 깔끔해진걸 느낄수 있었다.
import urllib2,re req = urllib2.Request('http://www.enigmagroup.org/missions/programming/7/') req.add_header('cookie','내 쿠키값') page = urllib2.urlopen(req).read() company = re.findall('Company:\s*(.*?)<br />',page)[0] #회사 이름을 가져온다. Company:라는 문자열 뒤에 공백있고, 그 뒤에 <br />이라는 문자열이 나올때까지 전부를 포함한다. department = re.findall('from the (.*?)department.<br />',page)[0] #department 이름을 가져온다. from the 뒤의 문자열부터 <br />이라는 문자열이 나올때까지. money = re.findall(department+'Monthly Budget: \$(\d+)',page) #위에서 가져온 department이름에다가 매달 예산을 가져온다. sum = 0 for m in money: sum += int(m) req = urllib2.Request('http://www.enigmagroup.org/missions/programming/7/submit.php','company='+company+'&department='+department+'&total='+str(sum)) req.add_header('cookie','내 쿠키값') print urllib2.urlopen(req).read()
저 money = re.~~부분부터 sum+=int(m)까지
money = sum([int(x) for x in re.findall(department+'Monthly Budget: \$(\d+)',page)])
한줄로 줄일 수 있다. 나중에 추가.
'Python > 2.7 simple coding(+ c++)' 카테고리의 다른 글
webhacking.kr 31 (0) | 2014.11.30 |
---|---|
Enigmagroup missions/programming 9 (0) | 2014.11.27 |
hack this site Programming missions : Unscramble the words (0) | 2014.11.15 |
Enigmagroup missions/programming 6 (0) | 2014.11.09 |
Enigmagroup missions/programming 4 (0) | 2014.11.09 |