【发布时间】:2021-02-12 11:54:14
【问题描述】:
我需要帮助弄清楚如何将此 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])
【问题讨论】:
-
您遇到了什么错误?你也试过使用
Pandas吗? -
我在上面添加了我目前正在尝试的内容,它不起作用,因为有太多争论,我不知道如何让它以当前输出到控制台的方式写入文件。虽然这也只是将其输出到 txt 文件。如果可能的话,我宁愿不使用熊猫。
-
将
for results2, results3, results4, results5 in zip(results2, results3, results4, results5):更改为for r2, r3, r4, r5 in zip(results2, results3, results4, results5):您目前所做的是,一旦此循环第一次运行,results2/3/4/5 将不再是列表,而是成为单个值。 -
好的,谢谢,它确实输出到文件中,现在我只需要研究如何获取它以便添加所有内容,现在它只添加 1 行。
-
我想我需要将 w 更改为 a,呵呵,不,仍然只将最后一项添加到下一行,我如何才能将每个单独的驱动程序信息输出到单独的行中?
标签: python-3.x selenium csv web-scraping beautifulsoup