@ekzotika

Как найти ссылку в строке полностью?

Мне необходимо найти и вырезать нужную ссылку в строке. Сейчас я нахожу ссылки так:

pattern = r'<a rel="(.+?)">'
s = re.findall(pattern, item.content)

Прохожусь циклом

for string in s:
...

Но далее мне нужно после определенного условия, если оно выполняется, удалять именно эту string из item.content, при том чтобы осталось название ссылки, которое видно на странице. Подскажите, как это сделать?
  • Вопрос задан
  • 221 просмотр
Пригласить эксперта
Ответы на вопрос 1
@devdb
Как вариант (не единственно возможное решение):
pattern = r'(<a rel=")(.+?)(">)'
splitted = re.split( pattern, html_str ) 
# splitted == [ '<html>...', '<a rel="', 'http://site.com/image1.jpg', '">', '<div>...', '<a rel="', 'http://site.com/image2.jpg', '">', ... ]
urls = splitted[2::4]
# urls == ['http://site.com/image1.jpg', 'http://site.com/image2.jpg', ... ]


Далее проходите по splitted в цикле с шагом 4, и, если image не удовлетворяет условию, удаляете текущие [ '<a rel="', 'http://site.com/image2.jpg', '">' ] из списка splitted или заменяете их на что-то (например, на "название ссылки").

А после чистки:
cleaned_html_str = ''.join(splitted)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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