Задать вопрос
@amirkhonov

Как убрать элементы HTML в Python?

Здравствуйте!
Есть html код, полученный из страницы с помощью urllib2:
import urllib2
url = 'http://localhost/test.txt'
username = '1'
password = '2'
p = urllib2.HTTPPasswordMgrWithDefaultRealm()
p.add_password(Realm, url, username, password)
handler = urllib2.HTTPBasicAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
f = urllib2.urlopen(url)
parsed = f.read()


Полученный HTML код:
<td class="tdrow1">
       <a class="aaa">#</a> 
      <a class="aaa">#</a> 
      <a class="aaa">#</a> 
      <a class="aaa">#</a> 
      <a class="aaa">#</a>
</td>

Весь код сохранен в переменную parsed.
Вопрос:
1. Как убрать все теги "a" с помощью lxml или BeautifulSoup (или другие ваши решения)?
2. Как убрать теги с определенным классом, например, в моем случае "aaa"?

Спасибо.
(вопросы от новичка в мире python)
  • Вопрос задан
  • 7442 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
sim3x
@sim3x
lxml.de/api/lxml.etree-module.html#strip_tags

stackoverflow.com/a/4681377

>>> etree.strip_tags(fragment,'a','c')
>>> etree.tostring(fragment)
'<fragment>text1 inner1 text2 <b>inner2</b> text3</fragment>'
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
SowingSadness
@SowingSadness
web-разработчик
ставишь PyQuery и выполняешь:
from pyquery import PyQuery as pq
d = pq(url='http://localhost/test.txt')
p = d("td")
print(p.text())
Ответ написан
Комментировать
@stayHARD
Посмотрите в строну BS.
А конкретней - decompose()
www.crummy.com/software/BeautifulSoup/bs4/doc/#dec...
Ответ написан
Комментировать
@I_ZeRoX
Можно просто использовать регулярные выражения, пример:
import re
text = '<a class="aaa">#</a> <a class="aaa">Text1</a> <a class="aaa">twxt2</a> <a class="aaa">text3</a> <a class="aaa">#</a>'
text = re.sub(r'<a.*?>','',text).replace('</a>','')
print(text)

Скрипт выведет такой результат: '# Text1 twxt2 text3 #', таким же образом можно сделать удаление только тегов с определённым классом
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы