ファイルにアップロードするファイルに基づいて、サイトの応答を抽出してアップロードしようとしています。サイトには以下のフォームがあります。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form method="POST" action="http://somewebsite.com/imgdigest" enctype="multipart/form-data">
quality:<input type="text" name="quality" value="2"><br>
category:<input type="text" name="category" value="1"><br>
debug:<input type="text" name="debug" value="1"><br>
image:<input type="file" name="image"><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
私がやりたいことは、ファイルをアップロードし、フォームを送信して応答を抽出することです。
例を見ることから始めました。アップロード作業に成功したと思います。これを実行したときにエラーが発生しなかったためです。
import urllib2_file
import urllib2
import request
import lxml.html as lh
data = {'name': 'image',
'file': open('/user/mydir/21T03NAPE7L._AA75_.jpg')
}
urllib2.urlopen('http://localhost/imgdigestertest.html', data)
残念ながら、私はここで応答を返すためのリクエストを行っていません。私はその応答をどのようにすればよいかわかりません。応答を取得したら、快適なパターン マッチでデータを抽出できるはずです。
提供された回答に基づいて、次のコードを試しました。
import requests
url = 'http://somesite.com:61235/imgdigest'
files = {'file': ('21e1LOPiuyL._SL160_AA115_.jpg',
open('/usr/local/21e1LOPiuyL._SL160_AA115_.jpg', 'rb'))}
other_fields = {"quality": "2",
"category": "1",
"debug": "0"
}
headers={'content-type': 'text/html; charset=ISO-8859-1'}
response = requests.post(url, data=other_fields, files=files, headers=headers)
print response.text
現在、次のエラーが表示されます。これは、画像ファイルが正しく添付されていないことを示しています。ファイルの種類を指定する必要はありますか?
Image::Image(...): bufSize = 0. Can not load image data. Image size = 0. DigestServiceProvider.hpp::Handle(...) |