Python- 写入 txt 文件时出现问题

Python- Issue writing txt file

我目前正在开发一个代理爬虫只是为了好玩,但是我 运行 遇到了一个问题

我希望将文件的输出保存到以下格式的 txt 文件中

185.98.232.22:8080
144.217.161.149:8080
103.106.57.174:8080
49.156.47.61:8080
179.109.144.16:44222

目前,当我尝试写一个 txt 文件时,我 得到第一个代理和端口,而不是其余的所以我得到这个

185.98.232.22:8080

下面是我的代码

from bs4 import BeautifulSoup
import requests

proxyDomain = "https://free-proxy-list.net/"

r = requests.get(proxyDomain)

soup = BeautifulSoup(r.content,"html.parser")

table = soup.find("table",{"id" : "proxylisttable"})

for row in table.find_all("tr"):
    colums = row.find_all("td")
    try:
        print ("%s:%s" % (colums[0].get_text(), colums[1].get_text()))
        Scrapped ="%s:%s" % (colums[0].get_text(), colums[1].get_text())
        file = open("newprox.txt","w")
        file.write(Scrapped)
        file.close()
    except:
        pass

更新您的代码以匹配以下内容:

    file = open("newprox.txt","a")
    file.write(Scrapped + "\n")

首先,如果您想循环写入,您需要以 "append" 模式打开文件,而不是 "write",因为后者会覆盖现有内容(请参阅 docs) .但是你不应该在每次迭代中 open/close 因为这是无效的。

至于多行,你需要在每行文字后附加\n

所以你想要这个:

with open("newprox.txt","w") as file:
    for row in table.find_all("tr"):
        colums = row.find_all("td")
        try:
            Scrapped = "%s:%s" % (colums[0].get_text(), colums[1].get_text())
            print(Scrapped)
            file.write(Scrapped + "\n")
        except:
            pass

或者让你的 try 块看起来像这样(实际上结果相同):

        Scrapped = "%s:%s\n" % (colums[0].get_text(), colums[1].get_text())
        print(Scrapped, end="")
        file.write(Scrapped)