我对文本的编码有问题,我正在从网站上搜索。特别是丹麦的æ,ø和å字母出错了。我确信网页的编码是UTF-8,因为浏览器使用此编码正确显示它。
我已经尝试过使用BeautifulSoup,因为很多其他帖子已经建议,但它并没有更好。但是,我可能做错了。
我在Windows 7 32位操作系统上使用python 2.7。
我的代码是:
# -*- coding: UTF-8 -*-
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item, Field
class Sale(Item):
Adresse = Field()
Pris = Field()
Salgsdato = Field()
SalgsType = Field()
KvmPris = Field()
Rum = Field()
Postnummer = Field()
Boligtype = Field()
Kvm = Field()
Bygget = Field()
class HouseSpider(BaseSpider):
name = 'House'
allowed_domains = ["http://boliga.dk/"]
start_urls = ['http://www.boliga.dk/salg/resultater?so=1&type=Villa&type=Ejerlejlighed&type=R%%C3%%A6kkehus&kom=&amt=&fraPostnr=&tilPostnr=&iPostnr=&gade=&min=&max=&byggetMin=&byggetMax=&minRooms=&maxRooms=&minSize=&maxSize=&minsaledate=1992&maxsaledate=today&kode=&p=%d' %n for n in xrange(1, 3, 1)]
def parse(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select("id('searchresult')/tr")
items = []
for site in sites:
item = Sale()
item['Adresse'] = site.select("td[1]/a[1]/text()").extract()
item['Pris'] = site.select("td[2]/text()").extract()
item['Salgsdato'] = site.select("td[3]/text()").extract()
item['SalgsType'] = site.select("td[4]/text()").extract()
item['KvmPris'] = site.select("td[5]/text()").extract()
item['Rum'] = site.select("td[6]/text()").extract()
item['Postnummer'] = site.select("td[7]/text()").extract()
item['Boligtype'] = site.select("td[8]/text()").extract()
item['Kvm'] = site.select("td[9]/text()").extract()
item['Bygget'] = site.select("td[10]/text()").extract()
items.append(item)
return items
项目'Adresse'和'Salgstype'包含æ,ø和å。非常感谢任何帮助!
干杯,
答案 0 :(得分:2)
好的做一些研究我终于检查了这些字符是indeed those letter but in unicode。由于您的cmd.exe
不了解 unicode,因此它会转储字符的字节。
您必须先在utf-8中对它们进行编码,然后将cmd.exe
的代码页更改为utf-8
这样做:
对于要输出到控制台的每个字符串,请像这样调用它的方法encode('utf-8')
:
print whatever_string.encode('utf-8')
在您的代码和控制台中,在调用脚本之前,请执行以下操作:
> chcp 65001
> python your_script.py
在我的python解释器中测试:
u'\xc6blevangen'.encode('utf-8')
>>>'\xc3\x86blevangen'
哪个是exact AE character encoded in utf-8:)
希望它有所帮助!