假设我在HTML页面中有很多选项(打开为文本文件),如下所示,
<select id="my">
<option id="1">1a</option>
<option id="2">2bb</option>
</select>
<select id="my1">
<option id="11">11a</option>
<option id="21">21bb</option>
</select>
现在,我搜索了<select id=
with open('/u/poolla/Downloads/creat/xyz.txt') as f:
for line in f:
line = line.strip()
if '<select id=' in line:
print "true"
现在,每当<select id=
出现时,我想获取id值。
也就是说,将字符串从“id=
之后复制到另一个”
我如何在python中执行此操作?
答案 0 :(得分:3)
html解析器库通常比原始字符串函数或正则表达式更好地解析html。以下是标准HTMLParser类的示例:
html = """
<select id="my">
<option id="1">1a</option>
<option id="2">2bb</option>
</select>
<select id="my1">
<option id="11">11a</option>
<option id="21">21bb</option>
</select>
"""
from HTMLParser import HTMLParser
class MyParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.ids = []
def handle_starttag(self, tag, attrs):
if tag == 'select':
self.ids.extend(val for name, val in attrs if name == 'id')
p = MyParser()
p.feed(html)
print p.ids # ['my', 'my1']
答案 1 :(得分:0)
BeautifulSoup4有一个非常有用的select
方法,可以使用css selectors解析html文档
类似下面的代码(未经测试抱歉:-)),应该可以获取html文档的select
标签的所有ID。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
tags = soup.select("select")
print [t.get("id", None) t for t in tags]