python美丽汤元内容标记

时间:2015-09-27 20:51:02

标签: python beautifulsoup

我正在尝试从包含以下HTML的网站中提取价格:

<div class="book-block-price " itemprop="offers" itemtype="http://schema.org/Offer" itemscope>
<meta itemprop="price" content="29.99"/>
<meta itemprop="price" content=""/>
    $ 29.99         </div>

我正在使用以下美丽的汤代码:

book_prices = soup_packtpage.find_all(class_="book-block-price ")
print(book_prices)
for book_price in book_prices:
    printable_version_price = book_price.meta.string
    print(printable_version_price)

print(book_prices)产量:

[<div class="book-block-price " itemprop="offers" itemscope=""    itemtype="http://schema.org/Offer">
<meta content="29.99" itemprop="price"/>
<meta content="" itemprop="price"/>
            $ 29.99     

print(printable_version_price)产生“无”。

如何处理元标记?或者我还有其他问题吗?

2 个答案:

答案 0 :(得分:3)

book_price.meta将匹配图书价格区内的第一个meta标记。这第一个meta标记文本为“空” - 这就是为什么要打印一个空字符串的原因:

<meta itemprop="price" content="29.99"/>

而是获取content属性值:

book_price.meta["content"]

答案 1 :(得分:0)

您可以使用lxml&#39; etree(伪代码,但应该足以让您前进):

from lxml import etree
doc = etree.parse(x) # where x is a file-like object, or parseString if x is a string.
print doc.xpath('//meta[itemprop="price"]/text()')