我可以将我的网页上需要的重要数据写入excel工作表,但是在进入“ Tickers.csv”循环中的下一个股票代码之前,它已写入了6次。
Values [0] <==(数字)是写入5次的数据,我不确定为什么。 Values2 [0] <==(字母)只写一次,这也是我期望values [0]做的事情。
示例
Values2 [0] =苹果公司(AAPL)
值[0] = 123 123 123 123 123 123
在我的思维中,值[0]应该与此相等:
值[0] = 123
我的代码在电子表格中写道:
Apple Inc,AAPL
123
123
123
123
123
123
IBM国际商业机器
456
456
456
456
456
456
我希望工作表的结果是这样,但不明白为什么不是这样的,
Apple Inc,AAPL
123
IBM国际商业机器
456
我正在使用XPath将数据抓取到工作表中,因此我知道将其粘贴到工作表上的唯一方法是添加索引(即values [0]而不是值)。当我不添加索引时,会收到一条错误消息,指出不允许写列表。
如果您需要有关我的情况的更多信息,请询问并感谢您的宝贵时间。
def main(): 导入csv 导入操作系统 从硒导入webdriver 从硒导入webdriver
chrome_path = r"C:\chromedriver\chromedriver.exe"
browser = webdriver.Chrome(chrome_path)
stocks_arr =[]
pfolio_file = open("tickers.csv", "r")
for line in pfolio_file:
indv_stock_arr = line.strip().split(",")
stocks_arr.append(indv_stock_arr)
stock_info_arr = []
for stock in stocks_arr:
stock_info = []
ticker = stock[0]
stock_info.append(ticker)
url="https://finance.yahoo.com/quote/{0}?p={0}&.tsrc=fin-srch".format(ticker)
browser.get(url)
try:
values_elementticker = browser.find_elements_by_xpath("//div[@class='D(ib) ']")
values2 = [x.text for x in values_elementticker]
print(values2[0])
except IndexError:
with open("results2.xls", "a") as f:
for i in range(len(values2)):
f.write(values2[0] + "\n")
try:
values_element = browser.find_elements_by_xpath("//span[@class='Trsdu(0.3s) ']")
values = [x.text for x in values_element]
print(values[0])
except IndexError:
with open("results2.xls", "a") as f:
f.write("-" + "\n")
with open("results2.xls", "a") as f:
for i in range(len(values2)):
f.write(values2[0] + "\n")
for i in range(len(values)):
f.write(values[0] + "\n")
print("Script completed")
browser.close()
restart = input("Do you wish to start again?").lower()
if restart == "yes":
main()
else:
exit()
main()
答案 0 :(得分:2)
您使用“值”列表的范围启动for循环。
并不是每次都写入新值(例如values [i]),而是每次都写入相同的第一个元素:values [0]
如果只需要一个元素,则不需要循环...
因此隐藏循环,更改行:
let bs_divs = new Array(bs_length);
for (let i = 0; i < bs_length; i++) {
bs_divs[i] = document.createElement("div");
}
收件人:
for i in range(len(values)):
f.write(values[0] + "\n")