您好我正在尝试废弃电子商务页面,但无法获得价格。
我有这一行的页面:
<span class="price">255,<sup>99</sup>€</span>
<span class="price">255 €</span>
但我无法将所有价格提取到一行。
我试过了:
response.xpath( '//跨度[@类= “价格”] /文本()')。提取物()
但它会忽略<sup>
标记中的文字...
我做错了什么?请帮忙。
答案 0 :(得分:1)
您需要在文本之前添加另一个斜杠。所以它解决所有节点。
response.xpath('//span[@class="price"]//text()').extract()
Text='255,'
Text='99'
Text='€'
答案 1 :(得分:1)
你应该把双重泼水而不是单一泼水。
response.xpath('//span[@class="price"]//text()').extract()
此语句将指定标记下的所有文本作为列表对象返回。 请注意,返回的列表可能有一些无用的元素,就像空或返回托架字符。 因此,如果您只想提取价格信息,则可以使用正则表达式。
response.xpath('//span[@class="price"]//text()').re(r'[\d.,]+')
货币符号被忽略。
['255,','99','255']
最后,如果你想从页面获得255.99
''.join(response.xpath('//span[@class="price"][1]//text()').re(r'[\d.,]+')).replace(",",".")
您首先获得所有产品。
最终代码:
products = response.xpath('//*[@class="catalog-table"]//td')
for prod in products:
price = ''.join(prod.xpath('//span[@class="price"][1]//text()').re(r'[\d.,]+')).replace(",",".")
print price
&#13;