gpt4 book ai didi

python - Scrapy shell 中的奇怪 XPath 结果

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:04 25 4
gpt4 key购买 nike

我正在尝试选择页面上的一个项目:

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

最佳答案

Scrapy返回的结果没有任何问题。 u'\xa3' 是井号:

In [99]: import unicodedata as UD

In [100]: UD.name(u'\xa3')
Out[100]: 'POUND SIGN'

In [101]: print(u'\xa3')
£

u'\xa312.99' 是井号 u'\xa3 后跟 unicode u'12.99'

如果您想从列表中删除井号,您可以这样做:

In [108]: data = [u'\xa312.99',
u'\xa38.99',
u'\xa38.99',
u'\xa34.49',
u'\xa34.49',
u'\xa329.99',
u'\xa329.99']

In [110]: [float(item.lstrip(u'\xa3')) for item in data]
Out[110]: [12.99, 8.99, 8.99, 4.49, 4.49, 29.99, 29.99]
<小时/>

以下文章是任何处理 unicode 的人“必读”的内容:

特别是对于以 Python 为中心的观点:

关于python - Scrapy shell 中的奇怪 XPath 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com