我正在使用Scrapy蜘蛛尝试从以下页面中提取价格:http://www.saxoprint.co.uk/shop/business-cards
特别是我感兴趣的元素是: // * [@ id =“customerGrossValue”]
当我运行我的蜘蛛时,它会找到它返回的元素u''。我怀疑这与UTF编码有关,并且是因为“£”符号不是ASCII。
我正在运行Windows 7和Python 2.7
我已经做了很多搜索,并试图编码为utf-8,但无济于事。
我确信这可能很简单,但非常令人沮丧,所以任何帮助都会感激不尽。
谢谢!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import scrapy
from scrapy.selector import Selector
from scrapy.http import Request
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from saxoprint.items import SaxoprintItem
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.loader import ItemLoader
from scrapy.contrib.exporter import XmlItemExporter
class saxoprintSpider(BaseSpider):
name = "saxoprint"
allowed_domains = ["saxoprint.co.uk"]
start_urls = [
"http://www.saxoprint.co.uk/shop/business-cards"
]
def parse(self, response):
selector_object = response.xpath('//div[starts-with(@class,"pricetableDIV")]')
for select in selector_object:
price_item = select.xpath('.//span[(@id="customerNetValue")]/text()').extract()[0].strip()
print price_item #test the value
item = SaxoprintItem(
price=price_item
yield item
答案 0 :(得分:0)
如果我理解正确,您希望将不仅包含数字的unicode字符串转换为数字。这应该有效:
>>> s = u'ę123'
>>> int("".join([c for c in s if c.isdigit()]))
123
您遍历字符串中的字符,创建仅包含数字(isdigit()
)字符的列表。之后,将列表转换回字符串("".join(...)
),最后将其转换为整数(int(...)
)。