2016-02-23 67 views
-1

在這個HTML代碼:正則表達式:如何找到在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屬性包含在這個例子中,它應該返回c.htmlname="main"

+3

*不*用正則表達式解析HTML。認真。 –

+0

與beautifulsoup的解決方案將是不錯 – azDev

+0

更多選項:https://duckduckgo.com/?q=python+dom+parser – jkdev

回答

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 
0

使用jQuery你可以簡單地做如下,

var srcFetched = $("input[name='main']").attr("src"); 
alert(srcFetched); 
+0

我可以做一些類似與美麗的? – azDev

+0

是的,你可以做我的美麗或者lxml –

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'] 
>>> 
在上面的代碼中

  1. 我們通過fromstring方法來創建對象
  2. 使用xpath評判找到目標值和標籤。
  3. 使用條件xpath獲取目標數據。