diff options
| -rw-r--r-- | day4/task2/task2.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/day4/task2/task2.py b/day4/task2/task2.py new file mode 100644 index 0000000..b4c69d2 --- /dev/null +++ b/day4/task2/task2.py @@ -0,0 +1,17 @@ +import re + +with open('index.html') as f: + data = f.read() + + +# Оставлю паттерн в этом виде, потому что пайчарм подсвечивает регулярки в связанных с ними функциях +url_pattern = re.compile(r'https?://([a-zA-Z0-9-_]+?\b\.)+([a-zA-Z0-9-_]+?\b)/?(([a-zA-Z0-9-_.]+?\b/)+([a-zA-Z0-9\-_.]+)/?)?') + +# re.DOTALL нужен потому что в примере внутри тега с картинкой есть перевод строки, +# а . не матчит переносы. Можно было бы заменить ".*?" на "(\n|.)*?", но так может появиться +# лишняя группа в начале из-за чего искомая ссылка не будет гарантированно(!) первой сматченной группой. +pattern = re.compile(f'<img.*?src=[\'"]?({url_pattern.pattern})["\']?.*?/?>', re.DOTALL) + +matches = re.findall(pattern, data) +links = list(map(lambda match: match[0], matches)) +print(links) |