2017-07-03 18 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