从BeautifulSoup.select中检索整个列表作为文本

时间:2017-07-03 15:29:18

标签: html python-3.x parsing beautifulsoup html-parsing

我正在尝试为正在处理的项目解析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>.....

1 个答案:

答案 0 :(得分: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))