我正在尝试在页面上选择一个项目:
http://www.betterware.co.uk/catalog/product/view/id/4530/category/342/
使用XPath的变体,例如:
sel.xpath('//div[@class="price-box"]/span[@class="regular-price"]/span[@class="price"]/text()').extract()
我正在看的html源代码是:
<div class="price-box">
<span class="regular-price" id="product-price-4530">
<span class="price">£12.99</span>
</span>
</div>
我得到了一堆甚至没有出现在页面源中的其他数字,而不是获得正确的 [u'£12.99']
. Scrapy shell给出:
[u'\xa312.99',
u'\xa38.99',
u'\xa38.99',
u'\xa34.49',
u'\xa34.49',
u'\xa329.99',
u'\xa329.99']
我已经毫不费力地以这种方式选择其他物品,但是这个和我所有的其他价格领域正在为价格文本带来这些神秘的结果 . 有人可以在这里为我点上一些亮点吗?我选择项目的python代码是:
def parse_again(self, response):
sel = Selector(response)
meta = sel.xpath('//div[@class="product-main-info"]')
items = []
for m in meta:
item = BetterItem()
item['link'] = response.url
item['item_name'] = m.select('//div[@class="product-name"]/h1/text()').extract()
item['sku'] = m.select('//p[@class="product-ids"]/text()').extract()
item['price'] = m.select('//div[@class="price-box"]/span/span/text()').extract()
items.append(item)
return items
1 回答
Scrapy返回的结果没有任何问题 .
u'\xa3'
是英镑符号:u'\xa312.99'
是英镑符号u'\xa3
,后跟unicodeu'12.99'
.如果你想从列表中删除英镑符号,你可以这样做:
对于处理unicode的人来说,以下文章是“必读”:
特别是对于以Python为中心的观点:
Unicode HOWTO
Pragmatic Unicode