urllib2 скачать картинку с картинки - PullRequest
0 голосов
/ 06 августа 2011

Я пытаюсь загрузить изображение капчи с платы VBB, используя "mechanize", он же urllib2. Здесь вы можете найти капчу (войдите под любым именем пользователя и введите пароль):

<img id="imagereg" src="image.php?type=hv&amp;hash=c76c6f3c2e0fc3bf32fd99d36555fa04" alt="" width="201" height="61" border="0" />

Я пытался получить это изображение, но это загрузить .php файл

br.open('http://www.amaderforum.com/image.php?type=hv&amp;hash=c76c6f3c2e0fc3bf32fd99d36555fa04')

Я изменил имя ext на изображение, но это не изображение с картинки. Любая помощь?

Ниже приведена информация из заголовков

GET /image.php?type=hv&hash=c76c6f3c2e0fc3bf32fd99d36555fa04 HTTP / 1.1 \ r \ nAccept-кодировка: идентификация \ r \ nHost: www.amaderforum.com \ r \ nCookie: bbsessionhash = 25e245fbb767; bblastvisit = 1312644421; bblastactivity = 0 \ r \ nСоединение: закрыть \ r \ nПользователь-агент: Mozilla / 5.0 (Windows; U; Windows NT 6.1; en-US; rv: 1.9.2.17) Gecko / 20110420 Firefox / 3.6.17 \ r \ n \ г \ п» ответ: «HTTP / 1.1 200 OK \ r \ n» Заголовок: Дата: Сб, 06 Авг 2011 15:30:48 GMT

header: Сервер: Apache

header: X-Powered-By: PHP / 5.2.9

header: Content-Transfer-Encoding: двоичный файл

header: Content-disposition: встроенный; имя файла = image.jpg

header: Content-Length: 5745

header: Соединение: закрыть

header: Content-Type: image / jpeg

1 Ответ

1 голос
/ 06 августа 2011

Вот короткий скрипт, который переходит на страницу утраченного пароля, находит капчу и загружает изображение в out.jpg.

Для этого скрипта требуется библиотека lxml .

Надеюсь, это поможет. Ура!

import urllib2
import lxml.html

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/2010010' \
    '1 Firefox/4.0.1',
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language':'en-us,en;q=0.5',
    'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.7'}

req = urllib2.Request('http://www.amaderforum.com/login.php?do=lostpw', None,
                      headers)
f = urllib2.urlopen(req)
page = f.read()

tree = lxml.html.fromstring(page)
imgurl = "http://www.amaderforum.com/" + \
      tree.xpath(".//img[@id='imagereg']")[0].get('src')

req = urllib2.Request(imgurl, None, headers)
f = urllib2.urlopen(req)
img = f.read()

open('out.jpg', 'wb').write(img)
...