我在Scrapy
中编写了以下简单的Web抓取工具:
#!/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 Checker
Firefox
。我尝试对æ
进行网址编码,但这不起作用。我错过了什么?
谢谢!
UPDATE:我在代码的开头添加了编码声明(Latin-1应该支持丹麦语字符)
答案 0 :(得分: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()
答案 1 :(得分:0)
SyntaxError: Non-ASCII character ‘\xe2′ in file … on line 40,
但未声明解码...
这是由替换标准字符(如撇号(')引起的,非标准字符,例如引用标记(`) 。
尝试编辑从pdf复制的文本。
答案 2 :(得分:0)
repsonse.xpath("//tr[contains(., '" + u'中文字符' + "')]").extract()