不能在scray的xlxswriter包中创建和编写excel

2024-04-24 04:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用pythonseleenium编写一个爬行站点的代码,代码执行并打印我想要的详细信息,但是我想用python中的xlxswriter将其存储在excel文件中。这是我的密码

import xlsxwriter
import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
row = 0
col = 0
r=1
if r:
    workbook = xlsxwriter.Workbook('fit1.xlsx')
    worksheet = workbook.add_worksheet()
for i in range(1,3):
    url = 'http://www.examble.com/kids//page-%d.html' % i
    for j in range(1,36):
        driver = webdriver.Chrome()
        driver.get(url)
        delay = 2 # seconds
        try:
            WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.ID,'religionToJs')))
            print "Page is ready!"
        except TimeoutException:
            print "Loading took too much time!"
        xpath = "//*[@id='wrapper']/main/div/div[2]/table/tbody/tr[%d]/td[1]/a" % j
        elem = driver.find_element_by_xpath(xpath)
        elem.click()
        time.sleep(5)
        name = driver.find_element_by_xpath('//*[@id="modal-name-info"]/div[1]/div[1]/table/tbody/tr[1]/td')
        gender = driver.find_element_by_xpath('//*[@id="modal-name-info"]/div[1]/div[1]/table/tbody/tr[2]/td')
        meaning = driver.find_element_by_xpath('//*[@id="modal-name-info"]/div[1]/div[1]/table/tbody/tr[3]/td')
        religion = driver.find_element_by_xpath('//*[@id="modal-name-info"]/div[1]/div[1]/table/tbody/tr[4]/td')
        orgin = driver.find_element_by_xpath('//*[@id="modal-name-info"]/div[1]/div[1]/table/tbody/tr[5]/td')
        variants = driver.find_element_by_xpath('//*[@id="modal-name-info"]/div[1]/div[1]/table/tbody/tr[6]/td')
        #workbook = xlsxwriter.Workbook('fit.xlsx')
        #worksheet = workbook.add_worksheet()
        worksheet.write(row, col,name.text)
        worksheet.write(row, col+1,gender.text)
        worksheet.write(row, col+2,meaning.text)
        worksheet.write(row, col+3,religion.text)
        worksheet.write(row, col+4,orgin.text)
        worksheet.write(row, col+5,variants.text)
        row = row + 1
        if name.text:
            print name.text
            print row
        else:
            print "dfdfg"
        driver.close()
        #workbook.close()
#workbook.close()

在这段代码中,在某些条件下创建了excel。所以我在for循环的内部添加了创建excel的代码,for循环总是打开并正确地写入数据,但它删除了以前的数据,而不是将数据追加到新行中,解决方法是什么


Tags: textnameimportdividbydrivertable