我正在尝试将文件从文件提交到带有机械化的网站上的表单,但文本看起来不太好,如果我复制粘贴看起来像这样:
████
█⌡⌡⌡⌡████
█⌡⌡⌡⌡⌡⌡⌡⌡⌡█████
█⌡⌡⌡⌡⌡████⌡⌡⌡⌡⌡⌡████
█⌡⌡⌡██ ██⌡⌡⌡⌡⌡⌡⌡⌡█████
█⌡⌡⌡⌡█ █⌡⌡⌡⌡██⌡⌡⌡⌡⌡⌡⌡████
如果我使用代码,Python看起来像这样:
����
���������
���������������
��������������������
������ ���������������
������ ������������������
����� ������ ���������������������
������������� �������� ���������������������������
可能是关于编码的东西,不能使它工作。在原始文件中,textfile.txt,编码是OEM-US,我用Google搜索并且是cp437。
def functionaa(linksite, text):
import mechanize
import cookielib
# Browser
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
edit = br.open(link)
html1 = edit.read()
br.select_form(nr=0)
br.form['textcode'] = "[pre]%s[/pre]" % text
br.submit()
f=open(r'E:\ABC\textfile.txt', 'r')
content = f.read()
functionaa("http://site.com", content)
答案 0 :(得分:1)
是的,看起来像机械化的问题。在CMD中,我可以像我一样打印它,没有unicode ..
content = file.read()
print content
但是当我通过mecanize发送它时,在网站上它就不一样了。
使用ignore标志,所有内容都会被跳过但文本。 错误说,ascii不能编码那些字符..
答案 1 :(得分:0)
如果您只想上传文件内容,就像用户在文本控件中手动输入文件内容一样,您应该首先确保处理代理假定的charset代表您的奇怪字符。如果是这种情况,您可以转到第2步并以这种方式读取本机Python字符串中的文件内容:
file = open(filename, 'rb')
content = unicode(file.read(), 'cp437')
file.close()
# Now use "content" to fill the form
相反,这就是you should upload您的文件的方式:
def upload(action, filename):
br = mechanize.Browser()
br.form.add_file(open(filename, 'rb'), 'text/plain; charset=cp437', filename)
# Do your work...
br.submit()
请注意,我opened处于二进制模式的文件,因此不会对其字节应用任何转换。另请注意,我在MIME类型中指定了假定的编码。现在由服务器代码来处理转码(如果有的话)。