[英]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")
首先,如果要循环和写入,则需要以“追加”模式而不是“写入”模式打开文件,因为后者会覆盖现有内容(请参阅docs )。 但是您不应该在每次迭代中打开/关闭,因为这样无效。
对于多行,您需要在每行写入的文本后附加\\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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.