Python删除跨度标记并覆盖Txt文件

时间:2016-01-08 00:42:33

标签: python html beautifulsoup bs4

我想在ping它之前从文本文档中删除span标记,否则它会失败,但我无法删除span标记并在没有标记的情况下再次保存文件或将新结果保存到要保存的数组。

from bs4 import BeautifulSoup

with open(r'sitelist.txt') as f:
    f = f.read().splitlines()

soup = BeautifulSoup(f,"html.parser")

while len(soup.find_all('span')) > 0:
    soup.span.extract()

f = soup

return f

我试图分解或解包,但无法得到我想要的结果。

2 个答案:

答案 0 :(得分:1)

如上所述,您无需readline(),只需使用read()。 我不确定提取物是否有效,是吗? 这是我的解决方案,它只是删除了span标签(我认为是你问的):

from bs4 import BeautifulSoup

with open('sitelist.txt', 'r') as html:
    soup = BeautifulSoup(myfile,"html.parser")
    for match in soup.findAll('span'): 
        match.unwrap()

with open('sitelist.txt', 'w') as html:
    html.write(str(soup))

我确信有一种方法可以打开文件进行读写,但我只是打开并重新打开文件两次。

答案 1 :(得分:0)

啊...... str.splitlines()返回一个列表,你不能只在列表中使用BeautifulSoup()。相反,只需将f = f.read().splitlines()替换为f = f.read()

然后,你的代码工作,你只需要将输出写入文件吗?

from bs4 import BeautifulSoup

with open(r'sitelist.txt') as f:
    f = f.read()

soup = BeautifulSoup(f, "html.parser")

while len(soup.find_all('span')) > 0:
    soup.span.extract()

with open(r'sitelist.txt', 'w') as f:
    f.write(str(soup))