大家好(这里的第一篇文章)。
我正在尝试将数据发送到网页。这个网页请求两个字段(一个文件和一个电子邮件地址),如果一切正常,网页返回一个页面说“一切正常”,并将文件发送到提供的电子邮件地址。我执行下面的代码,我的电子邮件帐户中什么都没有。
import urllib, urllib2
params = urllib.urlencode({'uploaded': open('file'),'email': 'user@domain.com'})
req = urllib2.urlopen('http://webpage.com', params)
print req.read()
print命令给我主页的代码(我假设它应该给出“一切正常”页面的代码)。
我认为(基于谷歌搜索)海报模块应该做的伎俩但我需要将依赖关系保持在最低限度,因此我想要一个使用标准库的解决方案(如果可能的话)。
提前致谢。
答案 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的文档:cookielib,OpenerDirector
答案 2 :(得分:0)