Как исправить изображение скачать питон - PullRequest
0 голосов
/ 19 января 2019

Я не могу сохранить изображение, полученное из супа-объекта, источник изображения верен, если я скопирую его и вставлю в браузер, однако я не могу его загрузить

Я использовал BeautifulSoup, чтобы найти изображение, затем requests, чтобы загрузить его, я также пытался загрузить его с помощью urllib.urlretrieve, но в итоге не получилось, я использовал lxml.html, чтобы проанализировать и получить изображение и загрузить его. с использованием двоичного декодирования

import bs4,urllib2,requests
REGISTER_URL="http://example.webscraping.com/places/default/user/register?_next=/places/default/index%22"
html=urllib2.urlopen(REGISTER_URL)
soup=bs4.BeautifulSoup(html,"html.parser")
image=soup.find("img",src=True)
print image['src']
#print image['src']
response=requests.get(image['src'])
'''
f=open("Cas.jpg")
for block in response.iter_content(1024):
    f.write(block)
f.close()
'''

Я хочу знать, почему requests и urllib.urlretrieve его загрузка не работает, Примечание: urllib.urlretrieve загружает черное изображение, в то время как запросы просто выдают ошибку. Мои ожидаемые результаты просто скачать изображение CAPTCHA

Примечание 1 : изображение является CAPTCHA из Пример очистки веб-страниц Python , и, конечно, новое изображение принимается при каждой загрузке страницы.

Примечание2 : это никоим образом не атака или действие чего-либо вредного на сайте, этот сайт сделан в качестве примера для проверки скребков.

1 Ответ

0 голосов
/ 19 января 2019

Изображение присутствует как Base64 на сайте. Вы можете получить строку данных из src, декодировать ее и затем сохранить как изображение.

from bs4 import BeautifulSoup
import requests
import base64
url = "http://example.webscraping.com/places/default/user/register?_next=/places/default/index%22"
r=requests.get(url)
soup=BeautifulSoup(r.text,'html.parser')
imgstring=soup.find('img')['src'].split(',')[1]
filename = 'image.jpg'
imgdata = base64.b64decode(imgstring)
with open(filename, 'wb') as f:
    f.write(imgdata)

image.jpg

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...