请帮助解决问题。
html:
<form class="variants" action="/cart">
<a class="thumb fancybox image_outer" href="products/apple-iphone-5s-16gb-black--space-gray-chernyj" data-fancybox-group="gallery5">
<img src="http://first-store.ru/files/products/iphone%205S%20black_1.100x112.jpg?16ef5c4132fc88594851f92ccc2f3437" alt="Apple iPhone 5s 16GB Black & Space Gray (Чёрный)" title="Apple iPhone 5s 16GB Black & Space Gray (Чёрный)">
</a>
<h1>
<a class="name_mark" data-product="1075" href="products/apple-iphone-5s-16gb-black--space-gray-chernyj">Apple iPhone 5s 16GB Black & Space Gray (Чёрный)</a>
</h1>
<span class="price price_mark price_value">26 990 <span class="currency">руб</span>
<input id="variants_2927" name="variant" value="2927" type="radio" class="variant_radiobutton" checked="" style="display:none;">
<input class="button buy buy_button buy_button_catalog" type="submit" value="Купить" data-result-text="Добавлено">
</span>
</form>
price = article.xpath('span[@class="price"]/span[@class="currency"]/text()')[0].strip()
if price:
print(price)
price = article.xpath('span/span[@class="currency"]/text()')[0].strip()
if price:
print(price)
但我需要在模型#1上找到“价格”。问题是属性类由多个值组成。
答案 0 :(得分:2)
[@class="price"]
属性值正好为class
时, price
才会匹配。
您需要xpath类似于以下内容:
price = article.xpath('span[contains(concat(" ", normalize-space(@class), " "), " price ")]/span[@class="currency"]/text()')[0].strip()
也许您最好使用css selector:
price = article.cssselect('span.price>span.currency')[0].text.strip()
答案 1 :(得分:1)
您可以像这样使用xpath(只选择价格范围):
article.xpath('span[contains(concat(" ", normalize-space(@class), " "), " price ")]')
另一种可能性是使用css选择器:
article.cssselect('span.price')