我正在尝试使用BeautifulSoup从网页上收集链接。到目前为止,我已经能够使用当前代码中注释的打印命令在命令提示符下打印它们。我遇到的问题是当链接保存到Output.txt文件时,它们都会相互覆盖,只保存最后一个链接。非常感谢任何帮助!
如果您有任何关于进行此转换的指示,请参阅我的最终目标。 我的最终目标是搜索txt文件中的链接,以确定其中是否包含特定文本。如果他们这样做,我想返回“Broken Link”或“Not Broken”。
soup = BeautifulSoup(html_doc) #html doc is source code for website i am using
for link in soup.find_all(rel="bookmark"):
Gamma =(link.get('href'))
f =open('Output.txt','w')
f.write(Gamma)
f.close()
#print(Gamma)
答案 0 :(得分:1)
您需要在循环之前打开文件进行写入,并在里面调用write()
:
soup = BeautifulSoup(html_doc)
with open('Output.txt','w') as f:
for link in soup.find_all(rel="bookmark"):
f.write(link.get('href'))
另请注意,使用with
context manager有助于您不必担心手动关闭文件。
答案 1 :(得分:0)
只需将“w”替换为“a”即可使其成为“追加”模式。
soup = BeautifulSoup(html_doc) #html doc is source code for website i am using
for link in soup.find_all(rel="bookmark"):
Gamma =(link.get('href'))
f =open('Output.txt','a')
f.write("{gamma}\n".format(gamma=Gamma))
f.close()
#print(Gamma)`enter code here`
答案 2 :(得分:0)
正如其他人所说,你需要附加你的文件。而且单次开启和关闭也更有效率。
f = open ('Output.txt', 'a')
for link in soup.find_all(rel="bookmark")
Gamma =(link.get('href')
f.write(Gamma + '\n')
f.close()