所以我是一名新手程序员,他刚刚在互联网教程的帮助下成功建立了他的第一个网络刮刀。代码完美运行(抱歉缺少注释),但它会在命令窗口中打印出我需要的所有内容。现在我一直在使用|使用example.txt函数将结果记录在一个简单的文本文件中,但是当我将此代码传输到新环境时,我无法使用该选项。
说到点,在代码的最后我写了一个文本文件来纠正这个但是fileout.write(i.text)只抓取数据的最后一行,有没有办法保存所有的数据收集到文本文件而不必更改代码?可能有,而且非常简单,但正如我所说,我对此相对较新,任何建议都将不胜感激。
来自网络抓取工具的完整数据输出位于代码下方。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.common.exceptions import NoSuchElementException
driver = webdriver.Chrome()
try:
driver.get("http://www.caiso.com/TodaysOutlook/Pages/supply.aspx") # load the page
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.highcharts-legend-item.highcharts-pie-series.highcharts-color-0'))) # wait till relevant elements are on the page
except TimeoutException:
pass
finally:
try:
stat_elements = driver.find_elements_by_css_selector('.highcharts-legend-item.highcharts-pie-series.highcharts-color-0')
for el in stat_elements:
for i in el.find_elements_by_tag_name('span'):
print (i.text)
except NoSuchElementException:
print ("No Such Element Found")
try:
driver.get("http://smartgriddashboard.eirgrid.com/#all/generation") # load the page
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, '.key-stats-container > .stat-box'))) # wait till relevant elements are on the page
except TimeoutException:
pass
finally:
try:
stat_elements = driver.find_elements_by_css_selector('.key-stats-container > .stat-box')
for el in stat_elements:
for i in el.find_elements_by_tag_name('label'):
print(i.text)
for i in el.find_elements_by_tag_name('p'):
print (i.text)
except NoSuchElementException:
print ("No Such Element Found")
filename = 'C:\Python\Scripts\data.txt'
fileout = open(filename, 'w')
fileout.write(i.text)
fileout.close()
driver.quit()
Output:
Renewables
21.8% (3,014 MW)
Solar
19.5% (860 MW)
LATEST SYSTEM
GENERATION
4,951 MW
THERMAL GENERATION
(COAL, GAS, OTHER)
76.94 %
RENEWABLE
GENERATION
20.09 %
NET
IMPORT
2.97 %
答案 0 :(得分:1)
根据你目前所做的事情,写入文件的'i'将只是你循环中找到的最后一个'我'。您可以通过以下两种方式之一解决这个问题:
您可以在循环到数组时附加所有'i'值,然后继续将此数组写入文件而不是'i'。
您可以将文件写入循环中,以便将找到的每个'i'写入文件。如果您这样做,请更改
fileout = open(filename, 'w')
到
fileout = open(filename, 'a')
这会将每个'i'附加到文件而不是覆盖。
答案 1 :(得分:0)
在将文件保存到文件的同时,是否真的需要查看输出?如果没有,则运行您的程序(仅将结果发送到tee
的那个)作为
python ... > C:\Path\to\directory\data.txt
,结果将保存在该文件中。然后,您可以使用type
命令或类似命令查看它。