为每个循环创建不同的.htm文件

时间:2014-05-15 21:01:31

标签: python selenium

这是我第一次发帖提问。如果我做错了,请原谅我。

我正在尝试创建一个python-selenium脚本来获取MULTIPLE网页的源代码。

我正在以下列方式运行脚本(通过Windows 7上的命令行)

python program.py< input.txt> output.htm

这确实会创建结果,但是由于我使用的是循环函数,因此它会附加包含所有结果的同一文件。

有没有办法,我可以为每个结果/打印创建一个新文件

提前致谢。

这是我的代码,

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains

path_to_chromedriver = '/Users/office/Desktop/chromedriver' # change path as needed
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
while(True):
url = raw_input("")
url2 = raw_input("")
browser.get(url)
time.sleep(10)
browser.get(url2)
time.sleep(10)

element_to_hover_over = browser.find_element_by_xpath('//*[@id="personSummaryTable"]/tbody/tr/td[2]/div[5]/div/span[1]/a')
hover = ActionChains(browser).move_to_element(element_to_hover_over)
hover.perform()
time.sleep(5)
stuff = browser.page_source.encode('ascii', 'ignore')
print stuff

Jan的想法很有效,

所有需要的是让python决定一个文件名, 谢谢Jan

import datetime
suffix = ".html"
basename = datetime.datetime.now().strftime("%y%m%d_%H%M%S")
fname = "_".join([basename, suffix]) # e.g. 'mylogfile_120508_171442'
print fname
with open(fname, "w") as f:
    f.write(stuff)

1 个答案:

答案 0 :(得分:0)

欢迎来到SO

您有两个选择

让Python代码决定输出文件的名称

这可能基于当前时间,例如

import time
# here get somehow your page content
page_content = ?????
prefix = "outut-"
suffix = ".html"
fname = "{prefix}{now:d}{suffix}".format(now=time.time())
print fname
with open(fname, "w") as f:
    f.write(page_content)

让你的外部循环(在Python之外)创建文件名

此文件名可以是例如在Linux上由某种形式的date命令创建。