blob: b4c69d2948979a5f50f3d3ca9fc78f59be6a134b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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)
|