#python #html #string
#python #HTML #строка
Вопрос:
У меня есть фрейм данных, содержащий источник для твитов. Исходный код находится в следующем формате:
<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>
Я пытаюсь найти способ удалить html и сохранить URL. Я не очень хорошо знаком с регулярными выражениями и не могу найти решение.
любая помощь была бы отличной.
Ответ №1:
Вы можете использовать модуль python urlextract для извлечения URL-адресов из любой строки-
from urlextract import URLExtract
text = '''
<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>
'''
text = text.replace(' ', '').replace('=','')
extractor = URLExtract()
print(extractor.find_urls(text))
Вывод-
['http://twitter.com/download/iphone']
Ответ №2:
Сначала вы можете получить URL-адрес, превратив тег в объект BeautifulSoup. Если это уже объект BeautifulSoup, вы можете применить это напрямую
.find("a").get("href")
Если нет, то вы можете сделать его объектом BeautifulSoup.
from bs4 import BeautifulSoup #pip install beautifulsoup4
a_tag ='<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>'
soup = BeautifulSoup(a_tag,"html5lib") #pip install html5lib
print(soup.find("a").get("href"))
#output - > http://twitter.com/download/iphone
Затем используйте эту функцию, чтобы удалить html, и текст останется
import re
def remove_html_tags(raw_html):
cleanr = re.compile("<.*?>")
clean_text = re.sub(cleanr,'',raw_html)
return clean_text
output = remove_html_tags(a_tag)
print(output)
#output -> Twitter for iPhone
Ответ №3:
Вы могли бы разделить ‘»‘. И возьмите второй элемент.
.split('"')[1]
https://docs.python.org/3/library/stdtypes.html ?выделить = разделить#str.split