Python3.1 : mixi ボイスへ投稿

  概要



投稿する仕様としては、VBScript でバッチ mixi ボイス投稿 と同じですが、
VBScript の http 通信のオブジェクトで実行した時と多少事情が違うようです。
やりとりするヘッダーの関係かもしれませんが、現時点では解りません

投稿はできるのですが、投稿後のレスポンスが返って来ないので、タイムアウト設定しました
マニュアルには、[,timeout] とあったのですが、timeout=n でないとエラーになります。
( 全体的にマニュアルは完全では無いようです。data=データも、キーワード無しで指定で可 )

POST するデータの URLEncode は、urllib.parse.urlencode では、Encoding は指定できない
ようなので( 一括のせいだと思いますが )、投稿データは urllib.parse.quote_plus で行っています

※ urllib.parse.urlencode では、utf-8 でエンコードされました

あと、正規表現の p = re.compile( "パターン" ) で、p.match("文字列") がうまく動きません。


関連する記事

Pyhon3.1 : クッキーを保持して二つの URL にアクセスする





  ソースコード



#! /usr/bin/env python3.1

import urllib.request
import http.cookiejar
import re

# **********************************************************
# Microsoft Framework 的に言うと、クッキーコンテナ
# **********************************************************
cj = http.cookiejar.MozillaCookieJar()
opener = urllib.request.build_opener(
			urllib.request.HTTPCookieProcessor( cj )
		 )

# **********************************************************
# POST するデータ
# **********************************************************
values = {
	'next_url' : '/home.pl',
	'email' : 'メールアドレス',
	'password' : 'パスワード' 
}
str_data = urllib.parse.urlencode(values)

# **********************************************************
# mixi ログイン
# ※ cookiejar を設定した opener で読みだす
# **********************************************************
try:
	opener.addheaders.append(('Content-Length', str(len(str_data)) ))
	response = opener.open(
			"https://mixi.jp/login.pl?from=login1",
			data=str_data
		)
except urllib.error.URLError as e:
	print(e)
	exit()

# **********************************************************
# サーバーからの http ヘッダ
# **********************************************************
print( response.info() )


# **********************************************************
# mixi ボイス 画面
# ※ cookiejar を設定した opener で読みだす
# **********************************************************
opener = urllib.request.build_opener(
			urllib.request.HTTPCookieProcessor( cj )
		 )
try:
	response = opener.open("http://mixi.jp/recent_voice.pl")
except urllib.error.URLError as e:
	print(e)
	exit()

html = response.read()

# **********************************************************
# 内容
# **********************************************************
html_txt = html.decode("euc_jp")
print( html_txt ,file=open("mixi_voice.txt","wt") )

m = re.search('post_key" value="([^"]+)"', html_txt, re.MULTILINE)
post_key = m.group(1)
#print( post_key )

# **********************************************************
# POST するデータ
# **********************************************************
str_data = "body=" + urllib.parse.quote_plus("Pythonで投稿テスト", encoding="euc_jp")
str_data += "&post_key=" + post_key

# **********************************************************
# mixi ボイス投稿
# ※ cookiejar を設定した opener で読みだす
# **********************************************************
opener = urllib.request.build_opener(
			urllib.request.HTTPCookieProcessor( cj )
		 )

opener.addheaders.append(('Content-Length', str(len(str_data)) ))
opener.addheaders.append(('User-agent', 'Mozilla/5.0' ))
print( opener.addheaders )

try:
	response = opener.open(
			"http://mixi.jp/add_voice.pl",
			data=str_data,
			timeout=5
		)
except urllib.error.URLError as e:
	print(e)
	exit()















   SQLの窓    create:2010/06/20  update:2015/11/02   管理者用(要ログイン)





フリーフォントWEBサービス

SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ