首页 > 解决方案 > 我需要帮助弄清楚如何将此 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])

标签: python-3.xseleniumcsvweb-scrapingbeautifulsoup

解决方案


这是我到目前为止的内容,还有一些问题需要解决,但我从 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])

我会尽可能地标记为答案,不知道为什么有人对我的问题给出否定的答案,但没有说明原因:/


推荐阅读