将带有符号的列表导出到CSV文件Unicode E

2024-09-28 19:06:46 发布

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

尝试将列表导出到包含符号的csv文件时,出现以下错误:

UnicodeEncodeError: 'ascii' codec can't encode character '\xa3' in position 77: ordinal not in range(128)

我无法以相同的方式将符号传递到csv文件时再现该问题。因此,这使我相信,有某种编码错误发生。你知道吗

我使用请求抓取网页,然后将html传递给lxml,通过xpath在网页中查找元素。你知道吗

在我通过使用这行代码获得所需的网页部分后,即项目价格:

itemPrice = productParser.xpath('//*[@id="prcIsum"]')

通常我会把这个还给你:

[<Element span at 0x112f54db8>]

但我将原始代码改为:

itemPrice = productParser.xpath('string(//*[@id="prcIsum"])')

因此,我认为string()引起了一个问题,但是我找不到一种方法来将html转换成可读的格式,例如(£5),并且能够导出到csv文件并实际能够读取它。你知道吗

任何帮助都将不胜感激。你知道吗

2018年1月2日更新: 下面的代码产生相同的复制错误。 使用Python3.6.3,Mac Os High Sierra。你知道吗

import requests
import csv
from lxml import html

exampleUrl = "https://www.ebay.co.uk/itm/JVC-LT-32C675-32-HD-Ready-LED-Smart-TV-Built-in-DVD-Player-Freeview-HD-Black/122517378430"
productHtml = requests.get(exampleUrl,timeout=10)
productParser = html.fromstring(productHtml.text)

itemTitle = productParser.xpath('string(//*[@id="itemTitle"]/text())')
itemPrice = productParser.xpath('string(//*[@id="prcIsum"])')
numberSold= productParser.xpath('string(//span[contains(@class,"vi-qtyS")]//a)')

itemDetails = []
itemDetails.extend((itemTitle,itemPrice.strip(),numberSold.strip(" sold")))

with open("csc.csv","w") as file:
                   writer=csv.writer(file)
                   writer.writerow(itemDetails)
file.close()

Tags: 文件csv代码inimportid网页string