python beautiful soup 元内容标签
python beautiful soup meta content tag
我正在尝试从包含以下内容的网站提取价格 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>
我正在使用以下 Beautiful Soup 代码:
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) 产生 "None".
如何处理元标记?还是我有其他问题?
book_price.meta
将匹配图书价格块内的第一个 meta
标签。第一个 meta
标签文本是 "empty" - 这就是为什么你得到一个空字符串打印:
<meta itemprop="price" content="29.99"/>
而是获取 content
属性值:
book_price.meta["content"]
您可以使用 lxml
的 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()')
我正在尝试从包含以下内容的网站提取价格 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>
我正在使用以下 Beautiful Soup 代码:
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) 产生 "None".
如何处理元标记?还是我有其他问题?
book_price.meta
将匹配图书价格块内的第一个 meta
标签。第一个 meta
标签文本是 "empty" - 这就是为什么你得到一个空字符串打印:
<meta itemprop="price" content="29.99"/>
而是获取 content
属性值:
book_price.meta["content"]
您可以使用 lxml
的 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()')