невозможно отправить данные, используя urllib и urllib2 (python) - PullRequest
1 голос
/ 25 июня 2011

Привет всем (первое сообщение здесь).

Я пытаюсь отправить данные на веб-страницу.Эта веб-страница запрашивает два поля (файл и адрес электронной почты), если все в порядке, веб-страница возвращает страницу с надписью «все в порядке» и отправляет файл на указанный адрес электронной почты.Я выполняю приведенный ниже код и ничего не получаю в своей учетной записи электронной почты.

import urllib, urllib2

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

команда печати дает мне код домашней страницы (я предполагаю, что вместо этого должен быть указан код «всеok "page).

Я думаю (основываясь на поиске Google) модуль плаката должен сделать свое дело, но мне нужно свести зависимости к минимуму, поэтому я хотел бы найти решение с использованием стандартных библиотек (если это возможно)).

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 27 июня 2011

Спасибо всем за ваши ответы. Я решаю свою проблему с помощью библиотеки механизации.

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 голос
/ 25 июня 2011

Этот сайт может проверять 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)

Документация для Python 2.7: cookielib , OpenerDirector

0 голосов
/ 25 июня 2011
...