Загрузите картинку по ссылке https://encrypted-tbn0.gstatic.com/images, используя Python - PullRequest
0 голосов
/ 02 августа 2020

Я занимаюсь парсингом воображений в гугле. У меня есть ссылка на изображение в моем скрипте, но он имеет следующий формат

https://encrypted-tbn0.gstatic.com/images?q=tbn: ANd9GcQh6rPd9hx_fUGzorshx1fG5kzUM5FGCSYmm2YBuLU3uSFFI5BviIWd6hrHbw & s * * 1006 imagenurl, imagen) для скачивания.

Кто нибудь знает другой способ скачивания? Я использую python 2.7

import requests
from  bs4 import BeautifulSoup
import urllib

def run():
    palabra ='pez'
    response = requests.get('https://www.google.com/search?q={}&hl=es&sxsrf=ALeKk00KoMQKffGLNWV5UEKbuPwpySPuig:1596391733831&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiajd7Rjv3qAhXqTN8KHSINBkcQ_AUoAXoECBoQAw&biw=1262&bih=593'.format(palabra))
    soup = BeautifulSoup(response.content,'html.parser')
    imagenes = soup.find_all('img')

    for i in range(1,5):
        imagen_i = imagenes[i]['src']
        imagen = imagen_i.split('/')[-1]
        print(imagen_i)
        #urllib.urlretrieve(imagen_i)


if __name__ == '__main__':
    run()

1 Ответ

0 голосов
/ 03 августа 2020

У меня нет проблем загрузить его с urlretrieve на Linux, но вы должны проверить print(imagen), чтобы увидеть, какие имена файлов вы используете.

Он дает имена, такие как

images?q=tbn:ANd9GcQh6rPd9hx_fUGzorshx1fG5kzUM5FGCSYmm2YBuLU3uSFFI5BviIWd6hrHbw&s 

с символами, которые могут быть запрещены в вашей системе - поэтому он не может их сохранять - и вам лучше создавать имена файлов вручную - ie. 1.jpg, 2.jpg, ..., "{}.jpg".format(i) - или вам следует удалить недопустимые символы из имени файла.

import requests
from  bs4 import BeautifulSoup
import urllib

palabra ='pez'

response = requests.get('https://www.google.com/search?q={}&hl=es&sxsrf=ALeKk00KoMQKffGLNWV5UEKbuPwpySPuig:1596391733831&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiajd7Rjv3qAhXqTN8KHSINBkcQ_AUoAXoECBoQAw&biw=1262&bih=593'.format(palabra))
soup = BeautifulSoup(response.content,'html.parser')
all_images = soup.find_all('img')

for i, img in enumerate(all_images[1:5], 1):
    src = img['src']
    print 'src:', src
    
    filename = src.split('/')[-1]
    print 'filename:', filename

    #import urlparse
    #parts = urlparse.urlparse(src)
    #query = urlparse.parse_qs(parts.query)
    #q = query['q'][0]
    #filename = q.split(':')[1]
    #print 'filename:', filename
            
    filename = '{}.jpg'.format(i)
    print 'filename:', filename
    
    urllib.urlretrieve(src, filename)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...