Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中循环并将数据写入csv文件_Python_Selenium_Csv - Fatal编程技术网

在python中循环并将数据写入csv文件

在python中循环并将数据写入csv文件,python,selenium,csv,Python,Selenium,Csv,我尝试使用存储在csv文件中的产品URL列表从网站中获取产品信息 我的解决方案是迭代URL列表和刮取信息,然后将每个产品信息字段存储到另一个csv文件中。 这是我的第一次尝试: import time from selenium import webdriver import requests from bs4 import BeautifulSoup import csv path = r'C:\Users\\admin\\Desktop\\chromedriver_win32\\Chro

我尝试使用存储在csv文件中的产品URL列表从网站中获取产品信息 我的解决方案是迭代URL列表和刮取信息,然后将每个产品信息字段存储到另一个csv文件中。 这是我的第一次尝试:

import time
from selenium import webdriver
import requests
from bs4 import BeautifulSoup
import  csv

path = r'C:\Users\\admin\\Desktop\\chromedriver_win32\\Chromedriver'
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('headless')
chrome_options.add_argument('window-size=1200x600')

browserdriver = webdriver.Chrome(executable_path = path,options=chrome_options)

with open('C:\\Users\\admin\\Desktop\\product_link.csv', mode='r') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    line_count = 0
    for row in csv_reader:
        link= row['url']
        print(link)
        #print(link)
        browserdriver.get(link)
        browserdriver.implicitly_wait(10)
        title=browserdriver.find_element_by_xpath('//div[@class="finfo"]//div[1]//h2').text
        print(title)
        price=browserdriver.find_element_by_xpath('//*[@class="regular-price"]').text
        tomtatsp=browserdriver.find_elements_by_xpath('//p[@class="cinfo"]')
        tomtatsp_moi=""
        for p in tomtatsp:
            tomtatsp_moi=str(tomtatsp_moi)+str(p.text)+"\n"
        with open('C:\\Users\\admin\\Desktop\\luudulieu_sanpham.csv', mode='w', encoding="utf-8") as csv_file:
            fieldnames = ['ten_sp','gia_sp','motasp_ngan']
            writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
            writer.writeheader()
            writer.writerow({'ten_sp':str(title),'gia_sp': str(price),'motasp_ngan':str(tomtatsp_moi)})
        print("step 1 done")

print("done")
我收到的结果是一个csv文件,其中只包含标题行和最后一个产品的信息,它来自输入csv(product_link.csv)中的最后一个url。 我认为当我将刮取的数据写入csv文件时有问题,但我不知道如何解决。
请帮我编辑上面的脚本。谢谢大家!

mode='w'
在这里,您总是以写入模式打开它,以替换旧内容。每次以写入模式打开它时,您都会覆盖luudulieu_sanpham.csv。如果要将所有数据输出到单个文件,请使用
mode='a'
进行追加。此外,如果要将所有数据都放在一个文件中,则只应
writer.writeheader()
一次。