2017-07-03 14 views
0

私が取り組んでいるプロジェクトのMLBデータを解析しようとしています。私はコーディングと美しいスープを使用しようとすることに新しいです。私が書いたコードは以下の通りです。私の問題は、.selectを使用した後、リスト形式で複数のhtml要素が返されますが、本当に必要なのはリスト形式の要素内の実際の数値です。私はテキストを取得するさまざまな方法を使用しようとしましたが、リストをテキストとして返すことができないというエラーが発生し続けます。 ABSoup[1].getTextを使用すると、1つの値を取得できますが、すべてを一度に取得する方法がわかりません。私はまた、複数回反復する関数を使用してみましたが、私はこれもエラーが発生します。新規の開発者への助言や助けをいただければ幸いです。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'] 

EDIT:

あなたが反復することができますリストから選択して、BeautifulSoupで解析します。私は、これはトリッキーな部分として働くだろうか分からない

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

が.select部分は、出力の先頭に、したがってリスト[ブラケットを返しているということである(同様端に1つあります)。これが私に美しいスープを通すことができないリストであるという事実です。 – dqups1

+0

@ dqups1、私は私の答えに編集セクションを追加しました。 –

+0

しかし、あなたの助けをありがとう。 – dqups1

関連する問題