在此HTML代码中:
<frameset border="0" framespacing="0" frameborder="0" rows="85,*">
<frame border="0" marginheight="0" name="logoframe" scrolling="no" noresize target="middle" src="a.html" onload="reload()">
<frameset cols="235,*">
<frame border="0" name="left" src="b.html" scrolling="no"><frame border="0" noresize name="main" src="c.html" scrolling="auto"></frameset><noframes>
<body topmargin="0" leftmargin="0">
<p>This page uses frames, but your browser doesn't support them.</p></body>
</noframes>
</frameset></html>
我想找到包含src
的{{1}}属性
在此示例中,它应返回name="main"
。
答案 0 :(得分:2)
可以使用BeautifulSoup
完成此操作,如下所示:
from bs4 import BeautifulSoup
html = """<frameset border="0" framespacing="0" frameborder="0" rows="85,*">
<frame border="0" marginheight="0" name="logoframe" scrolling="no" noresize target="middle" src="a.html" onload="reload()">
<frameset cols="235,*">
<frame border="0" name="left" src="b.html" scrolling="no"><frame border="0" noresize name="main" src="c.html" scrolling="auto"></frameset><noframes>
<body topmargin="0" leftmargin="0">
<p>This page uses frames, but your browser doesn't support them.</p></body>
</noframes>
</frameset></html>"""
soup = BeautifulSoup(html)
frame = soup.find('frame', attrs={'name': 'main'})
print frame['src']
它将显示文字:
c.html
答案 1 :(得分:0)
使用JQuery,您可以按照以下方式执行此操作,
var srcFetched = $("input[name='main']").attr("src");
alert(srcFetched);
答案 2 :(得分:0)
最好使用 HTML或XML解析器从 HTML或XML 内容中提取值,正则表达式很好,但我仍然希望Parser从html内容中提取数据。
有人在Beautifulsoup
给出答案。
以下是lxml
解析器
<强>演示强>:
>>> from lxml import html as PARSER
>>> root = PARSER.fromstring(html)
>>> root.xpath("//frame")
[<Element frame at 0xb748e414>, <Element frame at 0xb748eb94>, <Element frame at 0xb748e5a4>]
>>> root.xpath("//frame[@name='main']")
[<Element frame at 0xb748e5a4>]
>>> root.xpath("//frame[@name='main']/@src")
['c.html']
>>>
在上面的代码中,
fromstring
方法xpath
mothod查找目标值和标记。xpath
中的已使用条件以获取目标数据。