如何使Python循环以不同的行写入CSV?
我是Python新手,我有一个脚本,可以根据我想要的代码获取雅虎金融公司的名称、行业和行业信息,所有内容都会在不同的单元格中写入CSV,但只在一行中。如何使每个excel行按我输入的股票代码显示公司名称、行业和行业如何使Python循环以不同的行写入CSV?,python,csv,selenium,Python,Csv,Selenium,我是Python新手,我有一个脚本,可以根据我想要的代码获取雅虎金融公司的名称、行业和行业信息,所有内容都会在不同的单元格中写入CSV,但只在一行中。如何使每个excel行按我输入的股票代码显示公司名称、行业和行业 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC fr
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import csv
def get_all():
results = []
for x in tickers:
try:
website = "http://finance.yahoo.com/quote/{0}/profile?p={0}".format(x)
driver = webdriver.Chrome()
driver.get(website)
wait = WebDriverWait(driver, 10)
company = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="main-0-Quote-Proxy"]/section/div[2]/section/div/div[1]/div/h3')))
results.append(company.text)
wait = WebDriverWait(driver, 10)
sector = wait.until(EC.visibility_of_element_located((By.XPATH, "//span[. = 'Sector']/following-sibling::strong")))
results.append(sector.text)
wait = WebDriverWait(driver, 10)
industry = wait.until(EC.visibility_of_element_located((By.XPATH, "//span[. = 'Industry']/following-sibling::strong")))
results.append(industry.text)
driver.close()
except Exception as e:
error_msg = "Error on {0}-{1}".format(x,e)
results.append(error_msg)
driver.close()
print(results)
out = csv.writer(open("yahoo_companies.csv","w"), delimiter=',',quoting=csv.QUOTE_ALL)
out.writerow(results)
# Enter tickers below
tickers = ['COST', 'BBY']
get_all()
例如,我希望它给我(每个分号都是不同的单元格):
第1行:好市多批发公司;服务;打折,杂货店
第二行:百思买股份有限公司。;服务;电子商店
第三行:等等
现在我得到(全部在第一排):好市多批发公司;服务;折扣店、杂货店;百思买股份有限公司。;服务;Electronics商店在每行末尾,您应该有一个换行符(\n\r),以便CSV编辑程序理解 如果将每一行添加到自己的列表中并将其附加到主“结果”列表中,writerows将为每个元素添加行终止 请参阅下面的代码
def get_all():
results = []
for x in tickers:
# declare a new list to hold the values in each row
newRow = []
try:
website = "http://finance.yahoo.com/quote/{0}/profile?p={0}".format(x)
driver = webdriver.Chrome()
driver.get(website)
wait = WebDriverWait(driver, 10)
company = wait.until(EC.visibility_of_element_located((By.XPATH, '//*[@id="main-0-Quote-Proxy"]/section/div[2]/section/div/div[1]/div/h3')))
# appending to newRow list
newRow.append(company.text)
wait = WebDriverWait(driver, 10)
sector = wait.until(EC.visibility_of_element_located((By.XPATH, "//span[. = 'Sector']/following-sibling::strong")))
# appending to newRow list
newRow.append(sector.text)
wait = WebDriverWait(driver, 10)
industry = wait.until(EC.visibility_of_element_located((By.XPATH, "//span[. = 'Industry']/following-sibling::strong")))
# appending to newRow list
newRow.append(industry.text)
driver.close()
except Exception as e:
error_msg = "Error on {0}-{1}".format(x,e)
# appending to newRow list
newRow.append(error_msg)
driver.close()
# append the newRow list into 'results list'
results.append(newRow)
print(results)
outFile = open("yahoo_companies.csv","w")
out = csv.writer(outFile, delimiter=',',quoting=csv.QUOTE_ALL)
# see the following line, its writerows (plural). different to your code.
out.writerows(results)
outFile.close()
检查缩进和
result
声明。问一个小问题,为什么要使用请求来代替selenium?顺便说一句,如果你使用API会更好谢谢你的提示!另外,我正在学习我听说要快得多的请求。@wu4m4n:您发布的链接以字典形式显示了所有公司信息。如何在新脚本中获取此信息?