2017-07-03 16 views
0

正在檢索整個列表我正在嘗試爲我正在處理的項目分析MLB數據。我是新來的編碼和嘗試使用美麗的湯。我寫的代碼如下。我的問題是,在使用.select後,我以列表格式返回了多個html元素,但我真正需要的是列表格式中這些元素的實際數字。我試過使用各種檢索文本的方式,但是我不斷收到錯誤,指出列表不能作爲文本返回。如果我使用 ABSoup[1].getText,我可以檢索一個值,但我無法弄清楚如何一次檢索它們。我也試過使用一個函數迭代多次,但我也遇到了一個錯誤。任何建議或幫助新開發人員將不勝感激!從BeautifulSoup.select

import requests 
import bs4 
data = requests.get('http://www.baseball-reference.com/players/gl.fcgi? id=harpebr03&t=b&year=2017') 
MLBsoup = bs4.BeautifulSoup(data.text, 'html.parser') 
ABSoup = MLBsoup.select('td[data-stat="AB"]') 
print (ABSoup) 
#[<td class="right " data-stat="AB">3</td>, <td class="right " data-stat="AB">4</td>, <td class="right " data-stat="AB">3</td>, <td class="right " data-stat="AB">4</td>, <td class="right " data-stat="AB">4</td>, <td class="right " data-stat="AB">4</td>, <td class="right " data-stat="AB">4</td>, <td class="right " data-stat="AB">2</td>, <td class="right " data-stat="AB">4</td>..... 

回答

0

這是一個小例子如何,以便只檢索文字使用find_alltext作爲參數達到目標:

from bs4 import BeautifulSoup 
soup = (BeautifulSoup('<td class="right " data-stat="AB">3</td><td class="right " data-stat="AB">2</td>')) 
print (soup.find_all(text=True)) 

>>> ['3', '2'] 

編輯:

可以迭代從select中選擇列表並使用BeautifulSoup解析它。

text_results = [] 
for item in ABSoup; 
    text_results.append(BeautifulSoup(item).find(text=True)) 
+0

我不知道這會工作作爲棘手的部分是。選擇部分在輸出的開始返回一個列表因此[支架(還有一個是在結束爲好)。事實是,這是一張讓我無法通過美麗的湯傳遞回來的列表。 – dqups1

+0

@ dqups1,我在回答中添加了一個編輯部分。 –

+0

謝謝你的幫助。我能夠使用以下方式將列表轉換爲字符串: – dqups1