Bag of ML Words

ML = Machine Learning, Music Love, and Miscellaneous things in daily Livings

Python: urllib, urllib2でページいじれるの?

研究・・・ではない仕事でちょっと試したくなったので、テクニシャンの方に相談してちょっと調べたら、pythonはweb叩くのもライブラリ全部そろってるんですね・・・

素晴らしい。

urllib, urllib2というライブラリで解決するのか・・・

 

20.5. urllib — URL による任意のリソースへのアクセス — Python 2.7ja1 documentation

20.6. urllib2 — URL を開くための拡張可能なライブラリ — Python 2.7ja1 documentation

 

やりたいこと

機械翻訳のサイトに日本語文字列を送りつけて、その翻訳結果を自動的にゲットする

 

必要だったこと

  • 必要っぽいデータフォーマットを、ブラウザの開発ツール-->ヘッダ-->パラメータで確認してdictionary型として設定する
  • プロキシを設定する
  • urllib, urllib2のコマンドをそのまま叩く
  • 結果がまるっと帰ってくる
  • やはりブラウザの開発ツール-->インスペクタで必要っぽいところを見つけて、直接抽出する*1
  • ・・・が、いけるときはHTML parserを使えば良い

こうすれば良い

import urllib

import urllib2

 

#

# Proxy setting

#

proxy = {'http':"http://your.proxy.address:your_port_number/"}

proxy_handler = urllib2.ProxyHandler(proxy)

opener = urllib2.build_opener(proxy_handler)

urllib2.install_opener(opener)

 

#

# URL and the data to send

#

url = "http://www.some.nice.application/hogehoge"

data = {"attribute1" : "inu", "attribute2" : "nuko", "attribute3:"kiji"}

 

#

# Send request

#

POST_data = urllib.urlencode(data) # encodes the dictionary into POST format data. possibly

req = urllib2.Request(url, POST_data) #

responses = urllib2.urlopen(req)

 

#

# Retrieve the whole content

#

the_page = responses.read()

responces.close()

 

#

# Do your fancy computations with the content!!

#


 

 これで趣味(じゃないけど)のプログラミングでもやりたかったことに一歩近づきますね・・・!

*1:おうおうにしてhttpが壊れてたりするらしい(経験者