編集2:美しいスープとリストの問題
だから、問題はそれがStats
リンクに遭遇しなかったとき、私は、それを書いた方法は、それは単に完全for loop
飛ばしので、問題のfor loop
は走ったことがないです。私は以下のように少しリファクタリングしました。私はそれを行う最も効率的な方法がわからないが、それは動作します。私は新しい質問を投稿して、これを書くより良い、きれいな方法があるかどうかを判断するかもしれません。
for span in team.find_all("span"):
stats = span.find_all("a", href=True, text='Stats')
if stats:
for team_stats in stats:
team_stats_list.append(team_stats.get('href'))
else:
team_stats_list.append("NO STATS")
print(team_stats_list)
以下の初期のポスト...
私はこのコードのスニペットでは意図していますように私の追記が動作しない理由を私は理解することはできません。
for team_stats in team.find_all("a", href=True, text='Stats'):
stats_available = team_stats.get('href')
if stats_available:
team_stats_list.append(stats_available)
else:
team_stats_list.append("NO STATS")
print(team_stats_list)
基本的に、私は実際にがあり、Stats
のテキストがstats_available
変数に入れられていることを確認してください。
ある場合は、単にstats_available
変数をリストに追加します。変数が空の場合、代わりにテキストNO STATS
を追加したいと思います。
コードが正しく廃棄され、href
(利用可能な場合)が問題にならないようにしています。問題は、Stats
というhref
が存在しない場合、NO STATS
というテキストが付加されていない場合です。リストは単に空です。
編集1 - 全体の機能これまで:
source = urllib.request.urlopen('http://www.espn.com/college-football/teams').read()
soup = bs.BeautifulSoup(source, "lxml")
page_source = soup.find_all("div", {"class": "mod-container mod-open-list mod-teams-list-medium mod-no-footer"})
for conference in page_source:
conference_title = conference.div.h4.text
team_name_list = []
team_clubhouse_list = []
team_stats_list = []
print(conference_title)
for team in conference.find_all("ul", {"class": "medium-logos"}):
for team_title in team.find_all('h5'):
team_name_list.append(team_title.text)
print(team_name_list)
for team clubhouse in team.find_all("a", {"class": "bi"}):
team_clubhouse_list.append(team_clubhouse.get('href'))
print(team_clubhouse_list)
for team_stats in team.find_all("a", href=True, text='Stats'):
stats_available = team_stats.get('href')
if stats_available:
team_stats_list.append(stats_available)
else:
team_stats_list.append("NO STATS")
print(team_stats_list)
あなたがスクラップしようとしているURLは何ですか? – wpercy
あなたが期待しているものであることを確かめるために解析しているHTMLコードをチェックしてください(例えば、ウェブサーバがユーザエージェントに基づいて異なる応答を送るなど) –
@wpercy最初の質問で書かれている限り、 – Biggen