Python/2.7 simple coding(+ c++)

Enigmagroup missions/programming 7

qkqhxla1 2014. 11. 17. 11:23

페이지를 열어보면 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)])

한줄로 줄일 수 있다. 나중에 추가.