我想从以下HTML片段中解析HD的价格。我只有html代码的片段,所以我不能使用HTML解析器。
<div id="left-stack">
<span>View In iTunes</span></a>
<span class="price">£19.99</span>
<ul class="list">
<li>HD Version</li>基本上,格式是“在"HD版本”(大小写不敏感)之前找到价格。
re.match(r'^(\d|.){1,6}...HD\sVersion', string)如何从上面的字符串中提取值"19.99“?
发布于 2014-09-11 23:13:37
BeautifulSoup是它解析的HTML的非常宽大,您也可以将它用于HTML的块/部分:
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
data = u"""
<div id="left-stack">
<span>View In iTunes</span></a>
<span class="price">£19.99</span>
<ul class="list">
<li>HD Version</li>
"""
soup = BeautifulSoup(data)
print soup.find('span', class_='price').text[1:]指纹:
19.99发布于 2014-09-11 23:14:03
这里需要一个正则表达式,但它不是解析HTML的合适工具。为此使用BeautifulSoup。
>>> from bs4 import BeautifulSoup
>>> html = '''
<div id="left-stack">
<span>View In iTunes</span></a>
<span class="price">£19.99</span>
<ul class="list">
<li>HD Version</li>'''
>>> soup = BeautifulSoup(html)
>>> val = soup.find('span', {'class':'price'}).text
>>> print val[1:]
19.99发布于 2014-09-11 23:12:53
您仍然可以使用BeautifulSoup进行解析,不需要完整的html:
from bs4 import BeautifulSoup
html="""
<div id="left-stack">
<span>View In iTunes</span></a>
<span class="price">£19.99</span>
<ul class="list">
<li>HD Version</li>
"""
soup = BeautifulSoup(html)
sp = soup.find(attrs={"class":"price"})
print sp.text[1:]
19.99https://stackoverflow.com/questions/25798289
复制相似问题