同时web抓取循环遍历每个url,为每个url数据获取错误生成一个单独的文本文件


`for i in urls:
text=fetch_text(i)
listToStr = ' '.join([str(elem) for elem in text])
result = re.sub(r'<.*?>', '', listToStr)
basename = "file_"
file_name = ["{}_{}.txt".format(basename, j) for j in range(37,151)]
with open(file_name[i], 'w') as f:    ---->Error 
f.write(result)` 

我写了上面的代码,通过每个URL获取数据,并希望为每个URL数据创建一个单独的文件;与开放的线路。。对于file_name;列表索引必须是整数或切片,而不是str"。。。有人能帮我渡过难关吗?

您需要添加一个循环来迭代file_name

然后,我将urls的迭代变量更改为url,而不是i,因为i应该用于索引,而这里您直接迭代元素。

现在,在您的情况下,每个url都有一个结果,但您在每个url中生成了多个文件,并将相同的结果存储在这些文件上。这看起来是错误的,所以你应该真正检查你的循环的逻辑

for i, url in enmerate(urls):
text=fetch_text(url)
listToStr = ' '.join([str(elem) for elem in text])
result = re.sub(r'<.*?>', '', listToStr)
basename = "file_"
file_name = f"{basename}_{i+37}.txt"
with open(file_name, 'w') as f:
f.write(result)

最新更新