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 にアクセスする





  ソースコード



01.#! /usr/bin/env python3.1
02. 
03.import urllib.request
04.import http.cookiejar
05.import re
06. 
07.# **********************************************************
08.# Microsoft Framework 的に言うと、クッキーコンテナ
09.# **********************************************************
10.cj = http.cookiejar.MozillaCookieJar()
11.opener = urllib.request.build_opener(
12.            urllib.request.HTTPCookieProcessor( cj )
13.         )
14. 
15.# **********************************************************
16.# POST するデータ
17.# **********************************************************
18.values = {
19.    'next_url' : '/home.pl',
20.    'email' : 'メールアドレス',
21.    'password' : 'パスワード'
22.}
23.str_data = urllib.parse.urlencode(values)
24. 
25.# **********************************************************
26.# mixi ログイン
27.# ※ cookiejar を設定した opener で読みだす
28.# **********************************************************
29.try:
30.    opener.addheaders.append(('Content-Length', str(len(str_data)) ))
31.    response = opener.open(
32.            "https://mixi.jp/login.pl?from=login1",
33.            data=str_data
34.        )
35.except urllib.error.URLError as e:
36.    print(e)
37.    exit()
38. 
39.# **********************************************************
40.# サーバーからの http ヘッダ
41.# **********************************************************
42.print( response.info() )
43. 
44. 
45.# **********************************************************
46.# mixi ボイス 画面
47.# ※ cookiejar を設定した opener で読みだす
48.# **********************************************************
49.opener = urllib.request.build_opener(
50.            urllib.request.HTTPCookieProcessor( cj )
51.         )
52.try:
53.    response = opener.open("http://mixi.jp/recent_voice.pl")
54.except urllib.error.URLError as e:
55.    print(e)
56.    exit()
57. 
58.html = response.read()
59. 
60.# **********************************************************
61.# 内容
62.# **********************************************************
63.html_txt = html.decode("euc_jp")
64.print( html_txt ,file=open("mixi_voice.txt","wt") )
65. 
66.m = re.search('post_key" value="([^"]+)"', html_txt, re.MULTILINE)
67.post_key = m.group(1)
68.#print( post_key )
69. 
70.# **********************************************************
71.# POST するデータ
72.# **********************************************************
73.str_data = "body=" + urllib.parse.quote_plus("Pythonで投稿テスト", encoding="euc_jp")
74.str_data += "&post_key=" + post_key
75. 
76.# **********************************************************
77.# mixi ボイス投稿
78.# ※ cookiejar を設定した opener で読みだす
79.# **********************************************************
80.opener = urllib.request.build_opener(
81.            urllib.request.HTTPCookieProcessor( cj )
82.         )
83. 
84.opener.addheaders.append(('Content-Length', str(len(str_data)) ))
85.opener.addheaders.append(('User-agent', 'Mozilla/5.0' ))
86.print( opener.addheaders )
87. 
88.try:
89.    response = opener.open(
90.            "http://mixi.jp/add_voice.pl",
91.            data=str_data,
92.            timeout=5
93.        )
94.except urllib.error.URLError as e:
95.    print(e)
96.    exit()













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





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

SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ