나는 명단의 구성에 따라 팀 성능에 대한 분석을하고 싶기 때문에 모든 대학 축구 팀의 명단 데이터를 가져 오려고합니다.ESPN.com Python web scraping issue
내 스크립트가 첫 번째 페이지에서 작업 중이며 각 팀을 반복하고 각 팀의 로스터 링크를 열 수 있지만 팀의 로스터 페이지에서 실행중인 Beautiful Soup 명령은 계속 색인 오류를 던집니다. HTML을 볼 때 Beautiful Soup의 페이지 소스를 인쇄 할 때 제가 작성한 명령이 아직 작동해야하는 것처럼 보입니다. Chrome의 개발자 도구에 표시되지 않은 것입니다. JS의 일부 인스턴스가 컨텐츠를 제공하는 데 사용됩니까? 그렇다면 셀레늄이이 문제를 해결했다고 생각 했나요?
내 코드 ...에서
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()
와우 ... 복사하여 붙여 넣기에 적합합니다. 나는 이것을 며칠 동안보고 있었고 다른 사이트에서 잡으려고 코드를 '리팩토링'했습니다. 그것은 전혀 사이트가 아니 었습니다. 감사. –
누구에게나 일어납니다. 때때로 그것은 당신 앞에 있지만 당신은 그것을 볼 수 없습니다. –