際際滷

際際滷Share a Scribd company logo
15蛍で秤シスに鏑られる圭隈
幄塀氏芙アシスト 表弥 @DENZOWILL
みんなのPYTHON茶氏#7 LT(2015/12/9)
廣吭
☆云輝に鏑られても販は函れません。
ジョ`クです
mechanizeとかbottleとか乾るちょっとしたきっかけにな
れば...
お}
イントラの芙T碧で鏑られる
兆念とか芙T桑催でしか碧できなくて音宴
坪桑催とかでも碧できるようにして個鋲して鏑られ
たい
可創
Python
BeautifulSoup
mechanize
bottle
レシピ
1. 芙T碧にアクセスします
2. Y惚のHTMLを盾裂します
3. 碧訳周に輝する芙Tを函誼します
4. Y惚をJSONでします
1. 芙T碧にアクセスします
碧喘のクラスを恬撹
import?mechanize
from?BeautifulSoup?import?BeautifulSoup
class?EmpWorker(object):
????"""
????芙T碧を個鋲したい
????"""
????def?__init__(self):
????????self.browser?=?mechanize.Browser()
????????#?proxyはいらない
????????self.browser.set_proxies({})
????????self.browser.set_handle_robots(False)
????????#?POSTパラメ`タをGETにして畠芙TがるURL
????????self.target_url?=?"http://xxxxxxxx.do?p_kensaku=_&p_kensaku2=&p_kensaku3=
2. Y惚のHTMLを盾裂します
碧喘のメソッド弖紗
????#?碧キ`ワ`ドを函る
??def?get_emp(self,?search_key=None,?search_value=None):
????????res?=?self.browser.open(self.target_url)
????????#?護と猟忖コ`ド登協ミスる
????????#?BeautifulSoup寄挫き
????????soup?=?BeautifulSoup(res,?fromEncoding="sjis")
3. 碧訳周に輝する芙T
を函誼します
(get_empのAき)
????????#?Y惚喘のリスト
????????ret_list?=?[]
????????#?うちの芙T碧はtableタグ
????????for?i,?tr_node?in?enumerate(soup.findAll("tr")):
????????????tds?=?[x.text?for?x?in?tr_node.findAll("td")]
????????????if?len(tds)?>?7:
????????????????tmp_dict?=?{
????????????????????u"芙T桑催":?tds[0],
????????????????????u"芙T兆":?tds[1],
????????????????????u"iみ":?tds[2],
????????????????????u"仇曝":?tds[3],
????????????????????u"侭奉何俸":?tds[4],
????????????????????u"坪":?tds[6],
????????????????}
????????????????#?嗤燭碧訳周があるときだけPく
????????????????if?search_key?and?search_value?and?search_key?in?tmp_dict:
????????????????????if?search_value?in?tmp_dict[search_key]:
????????????????????????ret_list.append(tmp_dict)
????????????????else:
????????????????????ret_list.append(tmp_dict)
????????return?ret_list
聞ってみる
芙T兆 == 表弥 
In?[1]:?import?EmpWalker
In?[6]:?EmpWalker.EmpWalker().get_emp(search_key=u"芙T兆",?search_value=u"表弥??
Out[6]:?
[{u'u5185u7dda':?u'"sayamada',
??u'u5730u533a':?u'u5e02u30f6u8c37',
??u'u6240u5c5eu90e8u7f72':?u'23131',
??u'u793eu54e1u540d':?u'u5c71u7530??u8061',
??u'u793eu54e1u756au53f7':?u'2409',
??u'u8aadu307f':?u'SATOSHI?YAMADA'}]
づらかったので
In?[14]:?result?=?EmpWalker.EmpWalker().get_emp(search_key=u"芙T兆",?search_value
In?[15]:?for?k,?v?in?result[0].items():print?k,v
侭奉何俸?99999
芙T桑催?999999
仇曝?xxxx
坪?12345
iみ?SATOSHI?YAMADA
芙T兆?表弥??
4. Y惚をJSONでします
JSONモジュ`ル聞うだけ
In?[16]:?import?json
In?[17]:?result?=?EmpWalker.EmpWalker().get_emp(search_key=u"芙T兆",?search_value
In?[18]:?print?json.dumps(result,?indent=4)
[
????{
????????"u6240u5c5eu90e8u7f72":?"99999",?
????????"u793eu54e1u756au53f7":?"99999",?
????????"u5730u533a":?"xxxxxxx",?
????????"u5185u7dda":?"12345",?
????????"u8aadu307f":?"SATOSHI?YAMADA",?
????????"u793eu54e1u540d":?"u5c71u7530??u8061"
????}
]
鏑られポイント
匯繁しらべるだけでも芙T畠T函誼している
select?*?from?emp?where?hoge=foo?
◎
select?*?from?emp?
モット鏑られるために
5. WEB サ`ビスとして巷_する
BOTTLEのREADMEから
from?bottle?import?route,?run,?template
@route('/hello/<name>')
def?index(name):
????return?template('<b>Hello?{{name}}</b>!',?name=name)
run(host='localhost',?port=8080)
これだけでとりあえずAPサ`バとして咾い討
http://localhost:8080/hello/foo
Hello foo!
EMPWALKERをMみzむだけ
#?coding:utf?8
from?bottle?import?route,?run,?response
import?json
import?EmpWalker?
@route('/')
@route('/<search_key>/<search_value>')
def?index(search_key=None,?search_value=None):
????#?routeで函れるのはstr
????#?print?type(search_key)
????result?=?EmpWalker.EmpWalker().get_emp(
????????search_key=search_key.decode("utf?8"),?
????????search_value=search_value.decode("utf?8")
????)
????#?JSONをすと苧幣
????response.content_type?=?'application/json'
????return?json.dumps(result,?indent=4)
run(host='localhost',?port=8080)
こんな湖じで聞える
-> 畠Tる
-> 坪桑催が1234なデ`タがる
http://localhost:8080/
http://localhost:8080/坪桑催/1234
瘁はこれを芙坪でばらまくだけで
秤シスからI蛍されます
LET'S TRY !

More Related Content

15蛍で秤シスに鏑られる圭隈