#python #web-crawler #urllib #re
#python #веб-сканер #urllib #python- re
Вопрос:
Я пытаюсь научить себя Python, начиная с простого веб-сканера. Основная цель — получить URL-адреса, начинающиеся с «Https: //» и заканчивающиеся «.html», первая часть проста, но я не могу «фильтровать» для части .html без проблем. Я либо получаю ошибку, либо результатов нет:
import urllib, urllib.request, re
with urllib.request.urlopen("https://www.TEST") as website:
html = website.read().decode("utf-8")
links = re.findall('"((https://).*?)"', html)
print(links)
Комментарии:
1. Я настоятельно рекомендовал BeautifulSoup для этого вместо необработанного регулярного выражения
2. Помните, что регулярные выражения являются «жадными» и будут соответствовать столько, сколько смогут. Таким образом, ваш .* будет соответствовать всему, вплоть до ПОСЛЕДНЕЙ двойной кавычки в файле, а не СЛЕДУЮЩЕЙ. Рассмотрим [^»]* — «все, что не является двойной кавычкой».
3. @ Тим Робертс Большое спасибо