Как решить "ValueError: Не удается преобразовать в Excel"? (С использованием Python и openpyxl) - PullRequest
0 голосов
/ 13 марта 2019

Я собираю цену с веб-сайта, использующего lxml, и я хотел бы вставить эту цену в существующий файл excel, используя openpyxl. Когда я запускаю код, я получаю сообщение об ошибке «ValueError: Невозможно преобразовать ['$ 364'] в Excel" («$ 364 - это списанная цена). Как это исправить? Похоже, что строка 11 кода: sheet['A1'] = price является проблемой. Мой код регистрации ниже.

from lxml import html
import requests
page = requests.get('http://www.randomlengths.com/Woodwire/RL-Lbr-Pnl/')
tree = html.fromstring(page.content)
price = tree.xpath('//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()')
print(price)

import openpyxl
xfile = openpyxl.load_workbook('C:/Users/noah.merkousko/randomlengthslumber.xlsx')
sheet = xfile.get_sheet_by_name('Framing Lumber')
sheet['A1'] = price
xfile.save('random lengths lumber test.xls') 

Ответы [ 2 ]

1 голос
/ 13 марта 2019

«ValueError: Невозможно преобразовать ['$ 364'] в Excel» говорит об ошибке.Вы пытаетесь поместить список ['$364'] в ячейку, содержащую значения.Это можно исправить, выполнив индексирование, когда вы помещаете его в Excel, или индексирование, когда он анализируется из Интернета.

Опция 1:

price = tree.xpath('//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()')[0] # index at 0

Опция 2:

sheet['A1'] = price[0] # index when you put into Excel

Стоит отметить, что это может привести к ошибке IndexValue, если сайт изменен и значение больше не находится на '//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()', но в противном случае должно решить вашу проблему

0 голосов
/ 13 марта 2019

Вы можете перехватить ошибку как исключение.

try:
    sheet['A1'] = price
except ValueError:
    print("Handling the error case")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...