2017-02-20 35 views
2

我想使用美麗的湯獲得某些文本,但我不知道如何獲得/強標記後的文本。我找到了我正在尋找的內容,但只想要某些元素。使用美味湯提取兄弟文本節點

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歲,-6 M,12 d)蝙蝠/拋出: R/R

是否有可能只獲得出生日期和R/R出來嗎?

回答

3

您可以根據其文本選擇<strong>元素,然後使用next_sibling property選擇相鄰的兄弟節點。

​​

輸出:

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

如果你想選擇每個<strong>元素和它們的下一個兄弟節點,那麼你可以使用以下命令:

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

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

輸出:

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

這很完美。謝謝 –