python-3.x - 我需要帮助弄清楚如何将此 python 的最终结果输出到 csv
问题描述
我需要帮助弄清楚如何将此 python 的最终结果输出到 csv (C:/temp/test.csv) 文件。现在写它会打印到提示符。我尝试使用 write,但无论我尝试什么,我都会遇到错误。我的主要目标是将信息输出到不包含 html 的 csv,并用逗号分隔每个结果(result2、result3、result4、result5)。但现在我很高兴能够以它的方式输出到 csv 文件。然后我可以处理剩下的事情。
from selenium import webdriver
import time
from bs4 import BeautifulSoup
import csv
driver = webdriver.Chrome('C:/temp/chromedriver_win32/chromedriver.exe')
driver.get('https://www.dell.com/support/home/en-us/product-support/product/precision-15-5520-laptop/drivers')
time.sleep(3)
element = driver.find_element_by_xpath("//button[contains(.,'Show all')]").click();
page = driver.page_source
driver.close()
soup = BeautifulSoup(page,'html.parser')
results = soup.find(id='downloads-table')
results2 = results.find_all(class_='dl-desk-view')
results3 = results.find_all(class_='details-control sorting_1')
results4 = results.find_all(class_='details-control')
results5 = results.find_all(class_='btn-download-lg btn btn-sm no-break text-decoration-none dellmetrics-driverdownloads btn-outline-primary')
open('C:/temp/Precision_5520.csv', "w").close
with open('C:/temp/Precision_5520.csv', "a") as csvfile:
writer = csv.writer(csvfile)
for r2, r3, r4, r5 in zip(results2, results3, results4, results5):
writer.writerow([results2, results3, results4, results5])
解决方案
这是我到目前为止的内容,还有一些问题需要解决,但我从 Yatin 那里得到了关于让所有内容都显示在 csv 文件中的答案:
from selenium import webdriver
import time
from bs4 import BeautifulSoup
import csv
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
with open(file_path, 'r') as f:
list = f.readlines()
for items in list:
driver = webdriver.Chrome('C:/temp/chromedriver_win32/chromedriver.exe')
driver.get(items)
time.sleep(3)
element = driver.find_element_by_xpath("//button[contains(.,'Show all')]").click();
page = driver.page_source
driver.close()
soup = BeautifulSoup(page,'html.parser')
results = soup.find(id='downloads-table')
results2 = results.find_all(class_='dl-desk-view')
results3 = results.find_all(class_='details-control sorting_1')
results4 = results.find_all(class_='details-control')
results5 = results.find_all(class_='btn-download-lg btn btn-sm no-break text-decoration-none dellmetrics-driverdownloads btn-outline-primary')
new_name = items.replace('https://www.dell.com/support/home/en-us/product-support/product/','').replace('/drivers','').replace('\n','')
open('C:/temp/' + new_name + '.csv', "w").close
with open('C:/temp/' + new_name + '.csv', "a") as csvfile:
writer = csv.writer(csvfile)
for r2, r3, r4, r5 in zip(results2, results3, results4, results5):
writer.writerow([r2, r3, r4, r5])
我会尽可能地标记为答案,不知道为什么有人对我的问题给出否定的答案,但没有说明原因:/
推荐阅读
- jquery-plugins - 使用 jQuery multislider 时出错,Uncaught TypeError: u is not a function at multislider.min.js:9
- oracle - 在 Apex 5.0 中关闭模式对话框页面之前的确认
- javascript - 当从 javascript 代码中强制检查复选框时,复选框 onchange 功能不会触发
- azure - 如何使 Azure 存储静态网站 URL 一次性使用
- c# - EF Core EnableSensitiveDataLogging 无法按预期工作
- javascript - 通过 JavaScript 使用 Canvas,如何在单击按钮后更改圆的半径?
- algorithm - 我的 dp 方法的错误在哪里?https://www.spoj.com/problems/AE00/
- javascript - tinyMCE - 将样式复制到剪贴板以获取单词等
- react-native - 如何修复 undefind 不是对象 - 'this.navigation.openDrawer'
- node.js - 传递模式值代替数组以使用 mongoose 创建文档