2017-03-16 19 views
1

私はESPNからNBAのゲームのボックススコアを削り取ろうとしています。私は最初に名前を取得しようとしましたが、htmlタグを取り除くのが困難な時があります。スクラップ時にPythonでhtmlタグを取り除く

私は

get_text(), .text(), .string_strip() 

を使用してみましたが、彼らは私にエラーを与えておきます。

ここに私が今作業しているコードがあります。 player_name.textを使用して

from bs4 import BeautifulSoup 
import requests 

url= "http://scores.espn.com/nba/boxscore?gameId=400900407" 
r = requests.get(url) 
soup = BeautifulSoup(r.text,"html.parser") 

name = [] 
for row in soup.find_all('tr')[1:]: 
     player_name = row.find('td', attrs={'class': 'name'}) 
     name.append(player_name) 
print(name) 
+0

あなたがエラーを言うために。どのようなエラー? –

答えて

3

は動作するはずですが、問題は時々row.find('td', attrs={'class': 'name'}が空であることです。このようにしてみてください。私はそのようにこの問題を解決

if player_name: 
    name.append(player_name.text) 
+0

それは動作します!ありがとう – jhaywoo8

2

from bs4 import BeautifulSoup 
import requests 

url= "http://scores.espn.com/nba/boxscore?gameId=400900407" 
r = requests.get(url) 
soup = BeautifulSoup(r.text,"html.parser") 

name = [] 
for row in soup.find_all('tr')[1:]: 
    try: 
     player_name = row.select('td.name span')[0].text 
     name.append(player_name) 
    except: 
     pass 
print(name) 
1

私のコードをご参考

import requests 

from pyquery import PyQuery as pyq 

url= "http://scores.espn.com/nba/boxscore?gameId=400900407" 
r = requests.get(url) 
doc = pyq(r.content) 
print([h.text() for h in doc('.abbr').items()]) 
関連する問題