2017-02-20 1 views
2

아름다운 수프를 사용하여 특정 텍스트를 얻으려고하는데/strong 태그 뒤에 텍스트를 얻는 방법을 모르겠습니다. 내가 찾고있는 콘텐츠를 찾았지만 특정 요소 만 원합니다.아름다운 수프를 사용하여 형제 텍스트 노드 추출하기

res = requests.get('http://www.fangraphs.com/statss.aspx?playerid=10155&position=OF') 
res.raise_for_status() 
soup = bs4.BeautifulSoup(res.text, "lxml") 
gamescore = soup.select('#content > table > tr > td > table > tr > td > div') 

출력 : 생년월일 : 1991년 8월 7일 (25, Y 6 M, 12 d)는 박쥐/예외 : R/R

그것만 생년월일을 얻을 수있다 및 R/R이 밖으로?

답변

3

텍스트를 기준으로 <strong> 요소를 선택한 다음 next_sibling property을 사용하여 인접한 형제 노드를 선택할 수 있습니다.

birthday = soup.find('strong', text='Birthdate:').next_sibling.strip() 
gamescore = soup.find('strong', text='Bats/Throws:').next_sibling.strip() 

출력 :

elements = soup.select('#content > table table div > strong') 

for element in elements: 
    print(element.text, element.next_sibling) 

출력 : 당신이 <strong> 요소와 그 다음 형제 노드의 각을 선택합니다

> print(birthday, gamescore) 
> 8/7/1991 (25 y, 6 m, 12 d) R/R 

, 당신은 다음을 사용할 수 있습니다 :

> Birthdate: 8/7/1991 (25 y, 6 m, 12 d)      
> Bats/Throws: R/R      
> Height/Weight: 6-1/235      
> Position: OF 
> Contract: 
+0

완벽했습니다. 감사 –

관련 문제