从列表运行URL的python脚本并输出到txt

时间:2019-03-28 19:34:36

标签: python web-scraping beautifulsoup

我有一个用于单个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。我将这个问题简化了,但是如果您需要更多详细信息,请知道,我会这样做。

2 个答案:

答案 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')