当我尝试将列表导出到包含£符号的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()