診断メーカーをご存知でしょうか。
毎回、診断ボタンをクリックすると、診断結果を表示してくれるものです。
ところで、私の友人にゆーにゃんがいます。
ゆーにゃんは優しくて穏やかなんだけど、二本指でもタイピングが早い、
そんな同じ栃木出身の友人です。
で、だれかが「ゆーにゃん」という文字列が出るかどうかの診断メーカーを作成しました。
だれだろう、わかんないけど凄くひまなひとがつくったんだろう・・・
3回くらいやったんですが全然ゆーにゃんが見れません。
どうしても見たくなったので、python でゆーにゃんったー攻略プログラムを作ろうということになりました。
ゆーにゃんったーの仕組み
- 自分のtwitterIDを入力(これがPOSTするデータ)
- 診断ボタン押下('u' というキーで上記で入力したIDを送信)
- 「ゆーにゃん」が出なくてげんなり(divタグの'result'クラスの中)
診断メーカーは入力されるIDごとに結果が異なるので、
今回は、ランダムなIDをどんどんPOSTして、「ゆーにゃん」を見つけたいと思います。
#!/bin/python
# coding: utf-8
import re, random, string, urllib, urllib2, BeautifulSoup
from django.utils import html
def get_yunyan():
# ゆーにゃんったーのURL
url = 'http://shindanmaker.com/128157'
# POSTデータ作成
code = "".join([ random.choice(string.ascii_letters) for i in range(6) ])
post_data = { 'u': code }
encoded_args = urllib.urlencode(post_data)
# POST リクエスト送信
html_data = urllib2.urlopen(url, encoded_args).read()
# BeautifulSoup で解析
soup = BeautifulSoup.BeautifulSoup(html_data)
li = soup.find('div', { 'class': 'result'}).findChildren()
yunyan_string = html.strip_tags(li)
# 整形
p = re.compile(r'(\t)')
yunyan_list = p.split(yunyan_string)
return yunyan_list[2], code
def is_yunyan(yunyan):
return yunyan.encode('utf-8') == 'ゆーにゃん'
def main():
while 1:
yunyan = get_yunyan()
print yunyan[0] + ': ' + yunyan[1]
if is_yunyan(yunyan[0]):
break
if __name__ == '__main__':
main()
できました (* ゚ω゚ *)!やっとゆーにゃんを見つけた!
