首页 > 解决方案 > 关闭嵌套文本文件,并从嵌套文本文件中剪切行

问题描述

for h3 in soup.find_all('a'):

    print((str(h3.text)),file=open("demo.txt", "a"))

上面是我用于抓取网站的代码行。我正在使用漂亮的汤和硒来抓取网站。它为所有“a”标签说明的第一行是soup find all。然后打印这些 a 标签的文本并打印到文件 demo.txt 中。

出于某种原因,我必须添加“a”,附加,才能打印出整个文本。使用“w”它只打印一行。我正在寻找一种关闭 demo.txt 文件的方法,以便它不断地追加到同一个文件中。

这也有助于学习如何从文本文件中剪切某些行。即文本文件可能有 750-1000 行,因此剪切命令 (2-5, 94-100) 将非常有帮助。

提前致谢

标签: pythonfilebeautifulsoup

解决方案


将打印一行,因为每次他发现你说要搜索的内容时都会打开该文件并将其写入。当我们谈论文件上的单词时,计算机不知道“删除”这个词=]]所以对他来说,无论这个文件上有什么(如果该文件不存在将创建它)将从头开始并写入它再次。因此,a正在为您工作。

try:
    with open(file="demo.txt", mode="w", encoding="utf-8") as file:

        for h3 in soup.find_all('a'):
            file.write(str(h3.text))
finally:
    file.close()

对于那些删除行,我认为你不想要一些信息,所以检查你不想要什么并在里面做另一个 if 语句。

...
        for h3 in soup.find_all('a'):
            if stringA in h3.text or stringB in h3.text:
                pass
            else:
                file.write(str(h3.text))
...

推荐阅读