我有一个用于单个URL的python脚本,我需要针对url.txt中的多个URL运行该脚本并将输出保存在单个txt文件中。
这是python脚本(最小化):
import urllib2
from bs4 import BeautifulSoup
quote_page = 'https://www.example.com/page/1024'
#Rest of the script here
print var1
print var2
print var3
以下是一个URL的示例输出:
Name: John Doe
DOB: 01-Jan-1980
Gender: Male
我想要URL 1的此输出,我的脚本完全按照我的要求给出。我想对URL 2,URL 3等重复此操作,如url.txt中一样。
有什么想法吗?
P.S。我将这个问题简化了,但是如果您需要更多详细信息,请知道,我会这样做。
答案 0 :(得分:0)
以附加模式打开文件,并将每个文件的输出写入文件。
import urllib2
from bs4 import BeautifulSoup
quote_page = 'https://www.example.com/page/1024'
#Rest of the script here
output = open("output.txt", 'a') # 'a' means open in append mode so the file is not overwritten
# change print to output.write()
output.write(str(var1) + '\n') # separate each var by a new line
output.write(str(var2) + '\n')
output.write(str(var3) + '\n')
output.close()
这将写入所有var1,然后写入所有var2,然后写入所有var3,每个都由空行分隔,然后关闭文件。
要使其更兼容以从命令行接受URL:
import sys
import urllib2
from bs4 import BeautifulSoup
quote_page = sys.argv[1] # this should be the first argument on the command line
#Rest of the script here
output = open("output.txt", 'a') # 'a' means open in append mode so the file is not overwritten
# change print to output.write()
output.write(str(var1) + '\n') # separate each var by a new line
output.write(str(var2) + '\n')
output.write(str(var3) + '\n')
output.close()
使用您的网址的示例命令行:
$python3.6 myurl.py https://www.example.com/page/1024
答案 1 :(得分:0)
要从文件中获取URL,您需要打开它,然后为每一行运行脚本。假设一行有一个网址。 要写入您的输出文件,请打开一个文件,然后将var1,var2和var3写入其中
import urllib2
from bs4 import BeautifulSoup
with open('url.txt') as input_file:
for url in input_file:
quote_page = url
#Rest of the script here
with open("ouput_file.txt", "w") as output:
output.write(f'{var1}\n')
output.write(f'{var2}\n')
output.write(f'{var3}\n')