2013-06-18 2 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

관련 문제