我正在尝试为正在处理的项目解析MLB数据。我是编码和尝试使用美味汤的新手。我写的代码如下。我的问题是在使用.select
后我以列表格式返回了多个html元素,但我真正需要的是列表格式中这些元素中的实际数字。我尝试过使用各种方法检索文本,但我一直在收到错误,说列表不能作为文本返回。如果我使用
ABSoup[1].getText
,我可以检索一个值,但我无法弄清楚如何一次检索它们。我也尝试使用一个函数迭代多次,但我也得到了一个错误。任何对新开发者的建议或帮助都将不胜感激!
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 :(得分:0)
这是一个小例子,如何使用find_all
和text
作为参数来访问它,以便仅检索文本:
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))