私は、チームの成績を分析するために、自分の名簿の構成に基づいて分析を実行したいので、すべての大学のフットボールチームのロスターのデータを取得しようとしています。ESPN.com Python web scraping issue
私のスクリプトは最初のページで作業しており、各チームを繰り返して各チームのロースターリンクを開くことができますが、私がチームのロスターページで実行している美しいスープコマンドはインデックスエラーを投げかけています。私がHTMLを見ると、美しいスープからページソースを印刷するときに、私が書いているコマンドがまだうまくいくかのように思えます。私はChromeの開発者ツールには表示されません。 JSのインスタンスがコンテンツの配信に使用されていますか?もしそうなら、私はセレンがこれを回避したと思った?あなたのループのためにあなたは、1ページ目(roster_html = teams_driver.page_source
)のHTMLを使用しているので、あなたはteam_name_html
の第一項目を選択しようとすると、インデックスのエラーを取得するには
私のコード...
import requests
import csv
from bs4 import BeautifulSoup
from selenium import webdriver
teams_driver = webdriver.Firefox()
teams_driver.get("http://www.espn.com/college-football/teams")
teams_html = teams_driver.page_source
teams_soup = BeautifulSoup(teams_html, "html5lib")
i = 0
for link_html in teams_soup.find_all('a'):
if link_html.text == 'Roster':
roster_link = 'https://www.espn.com' + link_html['href']
roster_driver = webdriver.Firefox()
roster_driver.get(roster_link)
roster_html = teams_driver.page_source
roster_soup = BeautifulSoup(roster_html, "html5lib")
team_name_html = roster_soup.find_all('a', class_='sub-brand-title')[0]
team_name = team_name_html.find_all('b')[0].text
for player_html in roster_soup.find_all('tr', class_='oddrow'):
player_name = player_html.find_all('a')[0].text
player_pos = player_html.find_all('td')[2].text
player_height = player_html.find_all('td')[3].text
player_weight = player_html.find_all('td')[4].text
player_year = player_html.find_all('td')[5].text
player_hometown = player_html.find_all('td')[6].text
print(team_name)
print('\t', player_name)
roster_driver.close()
teams_driver.close()
うわー...コピーアンドペーストは私を駄目にする。私は数日間このことを見ていて、別のサイトから取得しようとするコードを「リファクタリング」していました。それはまったくサイトではありませんでした。ありがとう。 –
誰にでも起こります。時にはそれはあなたの前にありますが、あなたはそれを見ることはできません。 –