Я хочу использовать BeautfulSoup, чтобы искать и заменить <\a>
с <\a><br>
. Я знаю, как открыться urllib2
и затем синтаксический анализ для извлечения весь <a>
теги. То, что я хочу сделать, искать и заменить закрывающий тэг закрывающим тэгом плюс повреждение. Любая справка, очень ценившая.
Править
Я предположил бы, что это будет что-то подобное:
soup.findAll('a').
В документации существует a:
find(text="ahh").replaceWith('Hooray')
Таким образом, я предположил бы, что это будет вроде:
soup.findAll(tag = '</a>').replaceWith(tag = '</a><br>')
Но это не работает, и справка Python () не дает много
Это будет вставить
Тег после конца каждого ...
элемент:
from BeautifulSoup import BeautifulSoup, Tag
# ....
soup = BeautifulSoup(data)
for a in soup.findAll('a'):
a.parent.insert(a.parent.index(a)+1, Tag(soup, 'br'))
Вы не можете использовать SUP.findall (Tag = '' )
Поскольку BeautifulSoup не работает на торцевых метках отдельно - они считаются частью одного и того же элемента.
Если вы хотите поставить элементы
в , элемент
, когда вы спрашиваете в комментарии, вы можете использовать это:
for a in soup.findAll('a'):
p = Tag(soup, 'p') #create a P element
a.replaceWith(p) #Put it where the A element is
p.insert(0, a) #put the A element inside the P (between <p> and </p>)
снова, вы не понимаете «Создать
и P>
отдельно, потому что они являются частью того же.
Вы не заменяете конечный тег; В Booksoupsoup вы имеете дело с моделью объекта документа, как в браузере, а не строка, полная HTML. Таким образом, вы не можете «заменить» конечный тег, не заменив старт-тег.
То, что вы хотите сделать, это вставить новый элемент
элемент ...
элемент. Для этого вам нужно выяснить индекс элемента
в его родительском элементе и вставьте новый элемент сразу после этого индекса. например.
soup= BeautifulSoup('<body>blah <a href="foo">blah</a> blah</body>')
for link in soup.findAll('a'):
br= Tag(soup, 'br')
index= link.parent.contents.index(link)
link.parent.insert(index+1, br)
# soup now serialises to '<body>blah <a href="foo">blah</a><br /> blah</body>'