Как поместить файлы изображений, которые я очистил, используя Beautiful soup, в список? - PullRequest
0 голосов
/ 04 июля 2018

Это код, который я использовал, чтобы взять все картинки из r / pics на Reddit и поместить их в каталог. Я хочу иметь возможность взять фактические файлы в каталоге и поместить его в список. Застрял на том, как это сделать.

import requests
from bs4 import BeautifulSoup as bs
import os

url = "https://www.reddit.com/r/pics/"
r = requests.get(url)
data = r.text
soup = bs(data,'lxml')

image_tags = soup.findAll('img')

if not os.path.exists('direct'):
    os.makedirs('direct')

os.chdir('direct')
x = 0

for image in image_tags:
    try:
        url = image['src']
        source = requests.get(url)
        if source.status_code == 200:
            img_path = 'direct-' + str(x) +'.jpg'
            with open(img_path, 'wb') as f:
                f.write(requests.get(url).content)
                f.close()
                x+=1
    except:
        pass

Редактировать: обновленный код, но проблема все еще не решена

import requests
from bs4 import BeautifulSoup as bs
import os


url = "https://www.reddit.com/r/drawing"
r = requests.get(url)
data = r.text
soup = bs(data,'lxml')

image_tags = soup.findAll('img')

if not os.path.exists('directory'):
    os.makedirs('directory')

os.chdir('directory')
x = 0
mylist = []
for image in image_tags:
    url = image['src']
    source = requests.get(url)
    if source.status_code == 200:
        img_path = 'direct-' + str(x) +'.jpg'
        with open(img_path, 'wb') as f:
            f.write(requests.get(url).content)
            mylist.append(img_path)
            f.close()
            x += 1


print(mylist)

1 Ответ

0 голосов
/ 04 июля 2018

создайте список в начале вашего кода:

...
mylist = []
...

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

...
img_path = 'direct-' + str(x) +'.jpg'
mylist.append(img_path)
....

EDIT:

Я выполнил ваш обновленный код, и image_tags возвращается пустым - фактически страница, возвращаемая

url = "https://www.reddit.com/r/drawing"
r = requests.get(url)
data = r.text

Не содержит изображений. Я полагаю, что у reddit есть какая-то защита, которая не позволяет вам получать изображения таким образом.

Попробуйте добавить print(data), и вы поймете, что я имею в виду

Вам следует использовать API Reddit , чтобы Reddit не ограничивал ваши запросы.

...