@kirussian

Чем отличается re от replace в Python 3?

Итак, я применяю в коде регулярное выражение и должно сохраниться 12 картинок. При каждом запуске сохраняется сколько угодно, но только не 12. Почему?
Если я делаю через метод replace, то все корректно работает.
Вот ссылка на код
https://gist.github.com/kirussian911/8a14ab685b10e...

spoiler
import urllib.request
import re

page_number = 1
def load_source(website):
    site = urllib.request.urlopen(website)
    read_site = site.read()
    return read_site


def parse_img(source):
    links = []
    t = str(source)
    pattern = '<img width="\d+" height="\d+" src="'
    result = re.split(pattern, t)
    # рабочий вариант через replace
    # t = str(source).replace('550', ' ').replace('375', ' ').split('<img width=" " height=" " src="')

    for i in result:
        r = str(i).split('""')
        links.append(r[0])
    return links

def download(links):
    name = 1
    for i in links:
        try:
            v = urllib.request.urlopen(i)
            f = open('Стр' + str(page_number) + 'номер' +  str(name) +  '.jpg', 'wb')
            f.write(v.read())
            f.close()
            name += 1
        except:
            pass

def main():
    print('start page: ')
    print()
    source = load_source('https://aliholic.com/shop/')
    links = parse_img(source)
    download(links)
    print('Tnx')


if __name__=='__main__':
    main()
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lega
>>> text = 'xxx <img width="550" height="550" src="link1" > yyy <img width="550" height="550" src="link2" /> zzz'
>>> re.findall(r'<img [^>]*src="([^"]*)"', text)
['link1', 'link2']
Ответ написан
Комментировать
@Barafu_Albino_Cheetah
re - это же целый модуль стандартной библиотеки. Он могёт всё, но к нему и на кривой козе не подъедешь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы