使用£符号导出列表到CSV文件 - Unicode错误

时间:2018-01-02 02:06:52

标签: python csv unicode python-requests lxml

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

  

UnicodeEncodeError:'ascii'编解码器无法编码字符'\ xa3'   第77位:序数不在范围内(128)

以同样的方式将符号传递给csv文件时,我无法重现该问题。因此,这使我相信存在某种编码错误。

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

通过使用这行代码得到一个项目价格后我拥有所需的网页部分:

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

通常我会将此返回:

[<Element span at 0x112f54db8>]

但我通过将原始代码更改为:

将其转换为可读形式
itemPrice = productParser.xpath('string(//*[@id="prcIsum"])')

因此,我认为string()导致了一个问题,但是我找不到一种方法来将html变为可读的ie(£5)并且还能够导出到csv文件并且实际上能够阅读它。

非常感谢任何帮助。

更新02/01/2018: 下面的代码产生相同的复制错误。 使用Python 3.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()

0 个答案:

没有答案