LINUX.ORG.RU

Удалить лишние классы в html via Beautiful Soup

 ,


0

1
<div class="mediawiki ltr ns-0 ns-subject page-xxsfds TOC_hide oasis-breakpoints wikinav2 skin-oasis user-anon wiki-xxsfds">

Как мне удалить все классы кроме mediawiki?

from bs4 import BeautifulSoup, Comment
import sys
import re
import os

with open(sys.argv[1], 'r') as content_file:
    data = content_file.read()

soup = BeautifulSoup(data, "lxml")

for div in soup.find_all("div", {'class':'mediawiki'}):
     <...>

Ну и чтобы два раза не вставать - когда пытаюсь писать в тот же файл мне prettify орет что файл не ASCII и оно не мочь в UTF-8 (даже если ставить .encode("UTF-8"). Приходится делать s.py > в отдельный файл, только так работает.

★★★★★
for div in soup.find_all("div", {'class':'mediawiki'}):
    div.attrs['class'] = ['mediawiki']

Про prettify не понял, покажи код. И какой питон то?

doraneko
()
Ответ на: комментарий от doraneko
html = soup.prettify()
with open(sys.argv[1], "wb") as file:
    file.write(html)
Traceback (most recent call last):
  File "./tests/test2.py", line 26, in <module>
    file.write(html)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 21327-21330: ordinal not in range(128)

python2.7

PPP328 ★★★★★
() автор топика
Ответ на: комментарий от PPP328

Либо открывай не байтово 'wb', а 'w', должно работать.

doraneko
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.