从文本文件读取URL后,如何将所有响应保存到单独的文件中?

2024-04-25 12:15:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,可以从文本文件读取URL,执行请求,然后将所有响应保存在一个文本文件中。如何将每个响应保存在不同的文本文件中,而不是保存在同一个文件中?例如,如果标记为input.txt的文本文件有20个URL,我希望将响应保存在20个不同的.txt文件中,例如output1.txt、output2.txt,而不是一个.txt文件。因此,对于每个请求,响应都保存在一个新的.txt文件中。多谢各位

import requests
from bs4 import BeautifulSoup


with open('input.txt', 'r') as f_in:
    for line in map(str.strip, f_in):
        if not line:
            continue

        response = requests.get(line)
        data = response.text
        soup = BeautifulSoup(data, 'html.parser')
        categories = soup.find_all("a", {"class":'navlabellink nvoffset nnormal'})

        for category in categories:
            data = line + "," + category.text

            with open('output.txt', 'a+') as f:
                f.write(data + "\n")
                print(data)            

Tags: 文件inimporttxturlforinputdata
3条回答

我不确定我是否正确理解你的问题

我将创建一个数组/列表,并为每个url请求和响应创建一个对象。然后将对象添加到数组/列表中,并为每个对象写入不同的文件

您可以使用open('something.txt', 'w')创建一个新文件。如果找到该文件,它将删除其内容。否则,它将生成一个名为'something.txt'的新文件。现在,您可以使用file.write()来编写您的信息

下面是一个快速实现其他人暗示的方法:

import requests
from bs4 import BeautifulSoup


with open('input.txt', 'r') as f_in:
    for i, line in enumerate(map(str.strip, f_in)):
        if not line:
            continue

        ...

            with open(f'output_{i}.txt', 'w') as f:
                f.write(data + "\n")
                print(data)  

相关问题 更多 >