2016-05-23 14 views
1

私はESPNのウェブサイトから大学サッカーのリクルートデータを削り取ろうとしています。私は必要なすべてのTDタグを削る方法を考え出しましたが、私の出力はタグとその中のすべてを、実際のテキストで囲んで返しています。美しいスープのリターンタグとテキスト

私はウェブサイトで数時間の質問をしてきましたが、.textまたは.stringのいずれかでこの問題を修正する必要がありますが、どちらも問題なく動作しているようです。私はそれらを間違った場所に置いている可能性があります。ここで

は、私が実行しているコードです:

from bs4 import BeautifulSoup 
from urllib2 import urlopen 

f = open("17athletes.txt", 'w') 

sock = urlopen("http://espn.go.com/college-sports/football/recruiting/playerrankings/_/position/athlete/class/2017/view/position") 
html = sock.read() 
sock.close() 
soup = BeautifulSoup (html, "lxml") 
for tr in soup.findAll("tr"): 
    tds = str(tr.find_all("td")) 
    f.write(tds) 

f.close() 

そして、これは、それが戻っているもののほんの一部です:

<td width="3%">RK</td>, <td width="25%">PLAYER</td>, <td width="6%">POS</td> 

私は置くところに問題がある場合、私は思ったんだけどコード内のstr()?あるいは、私は、ESPNがそうした複雑なサイトであるため、何か他に必要なことがあるかどうか疑問に思っています。私はこのすべてに非常に新しいですが、私は正しい方法を学ぶために全力を尽くしています。 BeautifulSoup 2.4とPython 2.7を使うとそれが役に立ちます。前もって感謝します!

+0

* "どちらも動作していないようです" *どのように動作していないのでしょうか? – har07

+0

私はどちらかを試しても、私はまだテキストの代わりにタグとテキストの両方を取得しているようです。 – Cstansell2199

答えて

1

見つけたtdのすべてをループする必要があります。あなたのコードは次のようになります

for tr in soup.find_all("tr"): 
    for td in tr.find_all("td") 
     f.write(td.text) 
+0

ああ!ありがとう、私は家に帰るときにそれを試してみるよ。 – Cstansell2199

+0

"string"を何らかの理由で "text"に置き換えなければならなかったが、そうでなければ完全に動作する!他の誰かがこれを将来使用したいと思ったら、最後の行f.write(td.text + "、")を作成すると、Excelのテキストから列への変換が非常に簡単なテキストファイルが作成されます。 – Cstansell2199

関連する問題