2

我有以下简单的网络爬虫Scrapy

#!/usr/bin/env python
# -*- coding: latin-1 -*-

from scrapy.http import Request
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector

class MySpiderTest(BaseSpider):
    name = 'MySpiderTest'
    allowed_domains = ["boliga.dk"]
    start_urls = ["http://www.boliga.dk/bbrinfo/3B71489C-AEA0-44CA-A0B2-7BD909B35618",]

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        item = bbrItem()
        print hxs.select("id('unitControl')/div[2]/table/tbody/tr[td//text()[contains(.,'Antal Badeværelser')]]/td[2]/text()").extract()

但是当我运行蜘蛛时,我得到以下语法错误:

SyntaxError: Non-ASCII character '\xe6' in file... on line 32, but no encoding declared

因为æxpath. xpath 正在Xpath CheckerFirefox. 我尝试对 进行 URL 编码æ,但这没有用。我错过了什么?

谢谢!

更新:我在代码开头添加了编码声明(Latin-1 应该支持丹麦字符)

4

3 回答 3

5

为 XPath 表达式使用 unicode 字符串

hxs.select(u"id('unitControl')/div[2]/table/tbody/tr[td//text()[contains(.,'Antal Badeværelser')]]/td[2]/text()").extract()

或者

hxs.select(u"id('unitControl')/div[2]/table/tbody/tr[td//text()[contains(.,'Antal Badev\u00e6relser')]]/td[2]/text()").extract()

请参阅Python 源代码中的 Unicode 文字

于 2013-10-07T16:17:17.660 回答
0
SyntaxError: Non-ASCII character ‘\xe2′ in file … on line 40, 

但没有声明解码……</p>

这是由于在复制过程中将撇号(')等标准字符替换为引号(`) 等非标准字符所致。

尝试编辑从 pdf 复制的文本。

于 2014-01-10T06:27:06.100 回答
0
repsonse.xpath("//tr[contains(., '" + u'中文字符' + "')]").extract()
于 2017-05-07T01:59:22.153 回答