Удалить ссылки в html - Python
Формулировка задачи:
Всем доброго времени суток!
Поставлена задача: Найти на web-странице (на wiki-движке) ключевые слова и построить dot-дерево.
На данный момент я считала со страницы текст при помощи библиотеки request и нашла ключевые слова при помощи библиотеки rutermextract.
Но помимо текста у меня выводятся ссылки виде последовательностей символов и rutermextract определяет их как ключевые слова. Подскажите пожалуйста, как можно от них избавиться?
Здесь я принудительно убираю все лишнее, но если с тегами это можно сделать, то с ссылками это работает только на конкретной странице (дальше мне нужно будет по ключевым словам переходить на другие и искать ключевые слова там), мне нужен более универсальны способ.
Листинг программы
- import urllib.request
- from rutermextract import TermExtractor
- term_extractor = TermExtractor()
- #url, на котором ищем ключевые слова
- link = urllib.request.urlopen('http://itas.pstu.ru')
- lines = []
- for line in link.readlines():
- #взяли все строки с сотрудниками
- if line.find(b'<p>') != -1 and line.find(b'a href'):
- lines.append(line)
- link.close()
- #----------------Видимо, тут нужен перевод в html дерево----------------#
- #Переводим bytes в str
- for i in range(len(lines)):
- lines[i] = lines[i].decode('utf-8')
- #Можно работать как с обычной строкой
- for i in range(len(lines)):
- #Убираем все лишнее
- lines[i] = lines[i].replace('\t\t\t<li>', '')
- lines[i] = lines[i].replace('\"', '')
- lines[i] = lines[i].replace('<a href=', '')
- lines[i] = lines[i].replace('target=_blank>', '')
- lines[i] = lines[i].replace('</a></li>', '')
- lines[i] = lines[i].replace('</ul>', '')
- lines[i] = lines[i].replace("\r\n", '')
- lines[i] = lines[i].replace('<p>', '')
- lines[i] = lines[i].replace('</p>', '')
- lines[i] = lines[i].replace('<br />', '')
- lines[i] = lines[i].replace('</a>', '')
- lines[i] = lines[i].replace('title', '')
- lines[i] = lines[i].replace('</>', '')
- lines[i] = lines[i].replace('%A4%D0%B0%D0%B9%D0%B7%D1%80%D0%B0%D1%85%D0%BC%D0%B0%D0%BD%D0%BE%D0%B2_%D0%A0%D1%83%D1%81%D1%82%D0%B0%D0%BC_%D0%90%D0%B1%D1%83%D0%B1%D0%B0%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%B8%D1%87 =', '')
- lines[i] = lines[i].replace('%D0%A8%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%82%D1%8C%D0%B5%D0%B2_%D0%92%D0%BB%D0%B0%D0%B4%D0%B8%D0%BC%D0%B8%D1%80_%D0%93%D0%B5%D0%BD%D0%BD%D0%B0%D0%B4%D1%8C%D0%B5%D0%B2%D0%B8%D1%87 =', '')
- lines[i] = lines[i].replace('%D0%9F%D0%BE%D0%B3%D1%83%D0%B4%D0%B8%D0%BD_%D0%90%D0%BD%D0%B4%D1%80%D0%B5%D0%B9_%D0%9B%D0%B5%D0%BE%D0%BD%D0%B8%D0%B4%D0%BE%D0%B2%D0%B8%D1%87 =', '')
- lines[i] = lines[i].replace('/wiki/index.php/', '')
- for i in range(len(lines)):
- print (lines[i])
- #Извлекаем ключевые слова
- for i in range(len(lines)):
- text = lines[i]
- for term in term_extractor(text):
- print (term.normalized, term.count)
Решение задачи: «Удалить ссылки в html»
textual
Листинг программы
- import requests
- from lxml.html import fromstring
- import re
- #--------------------------------------
- # замена множественных пробелов на один
- #--------------------------------------
- def squeeze(value):
- """Replace all sequences of whitespace chars with a single space."""
- return re.sub(r"[\x00-\x20]+", " ", value).strip()
- if __name__ == "__main__":
- url = "http://itas.pstu.ru"
- resp = requests.get(url)
- # дерево элементов
- tree = fromstring(resp.text)
- # выбираем только нужный элемент и рекурсивно конкатенируем все текстовое содержимое его дочерних узлов
- data = tree.xpath("//div[@id='content']")[0].text_content()
- data = squeeze(data) # убираем лишние пробелы
- # в конец текста попадает одна ссылка - «http://itas.pstu.ru/wiki/index.php?title=Новости_кафедры&oldid=1114»
- # ошибка верстки? - но ее можно легко удалить
- data = re.sub(r"«http:.+?»",'',data)
- print(data)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д