Мне нужно удалить все теги html из данных данной веб-страницы. Я попытался это с помощью регулярных выражений:Регулярные выражения в юникоде python
import urllib2
import re
page = urllib2.urlopen("http://www.frugalrules.com")
from bs4 import BeautifulSoup, NavigableString, Comment
soup = BeautifulSoup(page)
link = soup.find('link', type='application/rss+xml')
print link['href']
rss = urllib2.urlopen(link['href']).read()
souprss = BeautifulSoup(rss)
description_tag = souprss.find_all('description')
content_tag = souprss.find_all('content:encoded')
print re.sub('<[^>]*>', '', content_tag)
Но синтаксис re.sub является:
re.sub(pattern, repl, string, count=0)
Итак, я изменил код, (вместо оператора печати выше):
for row in content_tag:
print re.sub(ur"<[^>]*>",'',row,re.UNICODE
Но это дает следующее сообщение об ошибке:
Traceback (most recent call last):
File "C:\beautifulsoup4-4.3.2\collocation.py", line 20, in <module>
print re.sub(ur"<[^>]*>",'',row,re.UNICODE)
File "C:\Python27\lib\re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
Что я делаю неправильно?
Вы можете не найти минимальный пример кода, который также терпит неудачу? Например, удалите все зависимости, отличные от stdlib 'bs4', если они не имеют решающего значения. Если они есть, добавьте к ним тег. Это упрощает ответ и более полезно. –
Вы видели [этот ответ] (http://stackoverflow.com/a/1732454/1663352) – Noelkd
Я знаю, что синтаксический анализ HTML с помощью RegEx - это грех, но umm, я действительно не мог удалить теги любым другим способом. Не могли бы вы предложить мне вместо этого рабочий метод? :) – Remy