首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >html标记中的Regex

html标记中的Regex
EN

Stack Overflow用户
提问于 2014-09-11 23:03:06
回答 5查看 114关注 0票数 1

我想从以下HTML片段中解析HD的价格。我只有html代码的片段,所以我不能使用HTML解析器。

代码语言:javascript
复制
<div id="left-stack">        
  <span>View In iTunes</span></a>
 <span class="price">£19.99</span>
 <ul class="list">
    <li>HD Version</li>

基本上,格式是“在"HD版本”(大小写不敏感)之前找到价格。

代码语言:javascript
复制
re.match(r'^(\d|.){1,6}...HD\sVersion', string)

如何从上面的字符串中提取值"19.99“?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-11 23:13:37

BeautifulSoup是它解析的HTML的非常宽大,您也可以将它用于HTML的块/部分:

代码语言:javascript
复制
# -*- 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:]

指纹:

代码语言:javascript
复制
19.99
票数 4
EN

Stack Overflow用户

发布于 2014-09-11 23:14:03

这里需要一个正则表达式,但它不是解析HTML的合适工具。为此使用BeautifulSoup

代码语言:javascript
复制
>>> 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
票数 4
EN

Stack Overflow用户

发布于 2014-09-11 23:12:53

您仍然可以使用BeautifulSoup进行解析,不需要完整的html:

代码语言:javascript
复制
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.99
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25798289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档