だから私はいくつかの PDF を私の引用サイト (citeulike.org) にアップロードするために使用したい小さなスクリプトを持っています。
問題は機能していないことです。これは次のことを行います。
so want to upload /Users/willwade/Dropbox/Papers/price_promoting_643127.pdf to 12589610 Traceback (most recent call last): File "citeuupload.py", line 167, in <module> cureader.parseUserBibTex() File "citeuupload.py", line 160, in parseUserBibTex self.uploadFileToCitation(b['citeulike-article-id'],self.localpapers+fileorfalse) File "citeuupload.py", line 138, in uploadFileToCitation resp = self.browser.submit() File "build/bdist.macosx-10.8-intel/egg/mechanize/_mechanize.py", line 541, in submit File "build/bdist.macosx-10.8-intel/egg/mechanize/_mechanize.py", line 203, in open File "build/bdist.macosx-10.8-intel/egg/mechanize/_mechanize.py", line 230, in _mech_open File "build/bdist.macosx-10.8-intel/egg/mechanize/_opener.py", line 193, in open File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 344, in _open File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 332, in _call_chain File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 1142, in http_open File "build/bdist.macosx-10.8-intel/egg/mechanize/_urllib2_fork.py", line 1115, in do_open File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 955, in request self._send_request(method, url, body, headers) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 989, in _send_request self.endheaders(body) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 951, in endheaders self._send_output(message_body) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 809, in _send_output msg += message_body UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 544: ordinal not in range(128)
そしてコード:
def uploadFileToCitation(self,artid,file): print 'so want to upload', file, ' to ', artid self.browser.open('http://www.citeulike.org/user/'+cUser+'/article/'+artid) self.browser.select_form(name="fileupload_frm") self.browser.form.add_file(open(file, 'rb'), 'application/pdf', file, name='file') try: resp = self.browser.submit() self.wait_for_api_limit() except mechanize.HTTPError, e: print 'error' print e.getcode() print resp.read() exit()
注意:ファイルを正しく読み込んでいることがわかります(そして存在します)。また、私は他の場所でこれを行っていることに注意してください
self.browser = mechanize.Browser() self.browser.set_handle_robots(False) self.browser.addheaders = [ ("User-agent", 'me@me.com citeusyncpy/1.0'), ]