Spectral
Ноя. 17, 2011 11:59:46
Добрый день всем!
Знающие люди, подскажите, каким образом в Python можно получить всю служебную информацию после GET\POST-запрос.
То есть именно то, что умеет Wget, если его запустить с ключом -qO- (O- - это ключ для перенаправления вывода команды в stdin следующей команды в bash ) - Wget пишет плейн-текстом ещё и жаваскрипт, причем исполненный, со всеми параметрами, прикрученный к этом у URL. Это и нужно от Python. Заголовки ответа получить не проблема, только беда в том, что некоторые CGI-ресурсы возвращают нужные параметры в жаваскрипте.
Как быть?
s0rg
Ноя. 17, 2011 12:41:36
Spectral
жаваскрипт, причем исполненный
Брехня )
Я использую вот такой ‘велосипед’:
import urllib
import urllib2
import cookielib
DEFAULT_HEADERS = [('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)'))]
class Browser(object):
'''
Basic browser-like object
Auto-Support:
- HTTP / HTTPS
- HTTP Redirects
- Cookies
Example:
web = Browser(headers, jar_file)
page = web.get('http://ya.ru')
print 'URL: %d' % page.geturl()
print 'HTTP code: %d' % page.getcode()
print 'HTTP headers:\n%s' % page.info()
print 'HTML:'
print page.read()
or:
web = Browser()
data = {'login': 'name',
'password':'pass'}
page = web.post(url, data)
where page is urllib.addinfourl object
'''
def __init__(self, headers=DEFAULT_HEADERS, jar_file=None):
self._cookie = cookielib.CookieJar(jar_file)
openers = [urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler(debuglevel=0),
urllib2.HTTPSHandler(debuglevel=0),
urllib2.HTTPCookieProcessor(self._cookie)]
self._browser = urllib2.build_opener(*openers)
self._browser.addheaders = headers
def add_headers(self, headers):
self._browser.addheaders.append(headers)
def close(self):
self._browser.close()
def post(self, url, data={}):
return self._browser.open(url, urllib.urlencode(data))
def get(self, url):
return self._browser.open(url)
Spectral
Ноя. 17, 2011 13:10:05
s0rg,
Спасибо большое! Выводит то, что и wget -q