2013-06-18 35 views
1

我正在學習美麗的湯。我成功地追蹤了我需要的html行。 我的下一步是從這些行中提取Id值。美麗的湯 - 如何從對象中提取字符串

找到行的代碼如下所示:

object = soup_station.find('img',{'src': re.compile("^Controls")}) 

如果我現在打印對象,我會得到這個,例如:

<img src="Controls/RiverLevels/ChartImage.jpg?Id=471&amp;ChartType=Histogram" id="StationDetails_Chart1_chartImage" alt="Current river level" /> 

的一部分,我想在該行提取以上是Id=之後的"471"

我嘗試在對象上使用re.search,但似乎該對象不是文本。

任何幫助將不勝感激!

回答

0

您可以調整如下:

s = '<img src="Controls/RiverLevels/ChartImage.jpg?Id=471&amp;ChartType=Histogram" id="StationDetails_Chart1_chartImage" alt="Current river level" />' 

from bs4 import BeautifulSoup 
import re 
from urlparse import urlsplit, parse_qs 


soup = BeautifulSoup(s) 
# find the node with a src starting with Controls 
node = soup.find('img',{'src': re.compile("^Controls")}) 
# Break up the url in the src attribute 
url_split = urlsplit(node['src']) 
# Parse out the query parameter from the url 
qs = parse_qs(url_split.query) 
# Display the value for `Id` 
print qs['Id'][0] 
+0

非常感謝,這工作很好! – keble

0

你要確保你正在執行對象的來源正則表達式搜索。你可以試試這個:

import re 
ele = soup_station.find('img') 
src = ele['src'] 

match = re.search(r'\?Id=(\d+)', src) 
ele_id = match.group(1) 
+0

當找到沒有src屬性的對象時,我遇到了問題。不知道如何解決它,所以我嘗試了urlsplt的答案。不過謝謝。 – keble