1

画像をBayImgにアップロードできるようにするスクリプトを作成しようとしていますが、正しく動作しないようです。私が知る限り、私は何の結果も得ていません。データを送信していないのか、何なのかわかりませんが、応答を印刷すると、画像をアップロードしたときに表示されるページではなく、ホームページの URL が表示されます。Python 2.x を使用していた場合は、Mechanize を使用します。ただし、Py3k では使用できないため、urllib を使用しようとしています。Python 3.2.3 を使用しています。コードは次のとおりです。

    #!/usr/bin/python3

    from urllib.parse import urlencode
    from urllib.request import Request, urlopen

    image = "/test.png"
    removal = "remove"
    tags = "python script test image"
    url = "http://bayimg.com/"
    values = {"code" : removal,
              "tags" : tags,
              "file" : image}

    data = urlencode(values).encode("utf-8")
    req = Request(url, data)
    response = urlopen(req)
    the_page = response.read()

どんな援助でも大歓迎です。

4

2 に答える 2

3
  1. あなたPOSTはデータに必要です
  2. 正しい URL を知る必要があります。この場合は、html ソースを確認してください。http://upload.bayimg.com/upload
  3. ファイル名を渡すだけでなく、ファイルの内容を読み取る必要があります

リクエストを使用して簡単に行うことができます。

于 2012-05-14T01:50:50.287 に答える
1

この投稿に出くわし、以下の解決策で改善することを考えました。urllib を使用して POST メソッドを実装した Python3 で記述されたサンプル クラスを次に示します。

import urllib.request
import json

from urllib.parse import urljoin
from urllib.error import URLError
from urllib.error import HTTPError

class SampleLogin():

    def __init__(self, environment, username, password):
        self.environment = environment
        # Sample environment value can be: http://example.com
        self.username = username
        self.password = password

    def login(self):
        sessionUrl = urljoin(self.environment,'/path/to/resource/you/post/to')
        reqBody = {'username' : self.username, 'password' : self.password}
        # If you need encoding into JSON, as per http://stackoverflow.com/questions/25491541/python3-json-post-request-without-requests-library
        data = json.dumps(reqBody).encode('utf-8')

        headers = {}
        # Input all the needed headers below
        headers['User-Agent'] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36"
        headers['Accept'] = "application/json"
        headers['Content-type'] = "application/json"

        req = urllib.request.Request(sessionUrl, data, headers)

        try: 
            response = urllib.request.urlopen(req)
            return response
        # Then handle exceptions as you like.
        except HTTPError as httperror:
            return httperror
        except URLError as urlerror:
            return urlerror
        except:
            logging.error('Login Error')
于 2015-04-10T08:00:57.590 に答える