无法使用urllib和urllib2(python)发送数据

时间:2011-06-25 17:53:57

标签: python file-upload urllib2 urllib

大家好(这里的第一篇文章)。

我正在尝试将数据发送到网页。这个网页请求两个字段(一个文件和一个电子邮件地址),如果一切正常,网页返回一个页面说“一切正常”,并将文件发送到提供的电子邮件地址。我执行下面的代码,我的电子邮件帐户中什么都没有。

import urllib, urllib2

params = urllib.urlencode({'uploaded': open('file'),'email': 'user@domain.com'})
req = urllib2.urlopen('http://webpage.com', params)
print req.read()

print命令给我主页的代码(我假设它应该给出“一切正常”页面的代码)。

我认为(基于谷歌搜索)海报模块应该做的伎俩但我需要将依赖关系保持在最低限度,因此我想要一个使用标准库的解决方案(如果可能的话)。

提前致谢。

3 个答案:

答案 0 :(得分:3)

感谢大家的回答。我使用mechanize库解决了我的问题。

import mechanize 

br = mechanize.Browser()
br.open('webpage.com') 

email='user@domain.com'

br.select_form(nr=0) 
br['email'] = email 
br.form.add_file(open('filename'), 'mime-type', 'filename')    
br.form.set_all_readonly(False) 
br.submit() 

答案 1 :(得分:1)

该网站可以检查Referer,User-Agent和Cookies。

处理所有这一切的方法是使用urllib2.OpenerDirector urllib2.build_opener# Cookies handle cj = cookielib.CookieJar() CookieProcessor = urllib2.HTTPCookieProcessor(cj) # Build OpenerDirector opener = urllib2.build_opener(CookieProcessor) # Valid User-Agent from Firefox 3.6.8 on Ubuntu 10.04 user_agent = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8' # Referer says that you send request from web-site title page referer = 'http://webpage.com' opener.addheaders = [ ('User-Agent', user_agent), ('Referer', referer), ('Accept-Charset', 'utf-8') ]

urlencode

然后使用opener.open(params)准备参数并按{{1}}

发送请求

Python 2.7的文档:cookielibOpenerDirector

答案 2 :(得分:0)