아름다운 스프를 사용하여 페이지를 반복했지만 어떤 이유로 든 첫 번째 페이지를 넘어 루프를 진행할 수 없습니다. 그것은 텍스트 문자열이기 때문에 그것은 쉬워야 만하는 것처럼 보입니다,하지만 그것은 아마도 내 구조가 내 텍스트 문자열이 아닌 루프 되돌아 오는 것 같습니다?첫 페이지에 루프가 붙어 있습니다
여기에 내가 가진 무엇 :
이import csv
import urllib2
from bs4 import BeautifulSoup
f = open('nhlstats.csv', "w")
groups=['points', 'shooting', 'goaltending', 'defensive', 'timeonice', 'faceoffs', 'minor-penalties', 'major-penalties']
year = ["2016", "2015","2014","2013","2012"]
for yr in year:
for gr in groups:
url = "http://www.espn.com/nhl/statistics/player/_/stat/points/year/"+str(yr)
#www.espn.com/nhl/statistics/player/_/stat/points/year/2014/
page = urllib2.urlopen(url)
soup=BeautifulSoup(page, "html.parser")
pagecount = soup.findAll(attrs= {"class":"page-numbers"})[0].string
pageliteral = int(pagecount[5:])
for i in range(0,pageliteral):
number = int(((i*40) + 1))
URL = "http://www.espn.com/nhl/statistics/player/_/stat/points/sort/points/year/"+str(yr) + "/count/"+str(number)
page = urllib2.urlopen(url)
soup=BeautifulSoup(page, "html.parser")
for tr in soup.select("#my-players-table tr[class*=player]"):
row =[]
for ob in range(1,15):
player_info = tr('td')[ob].get_text(strip=True)
row.append(player_info)
f.write(str(yr) +","+",".join(row) + "\n")
f.close()
이 반복해서 같은 처음 40 개 기록을 가져옵니다.
가 나는 것처럼 this solution를 사용하여 시도 및prevLink = soup.select('a[rel="nofollow"]')[0]
newurl = "http:" + prevLink.get('href')
을하는 것은 잘 작동 않았다 찾았어요,하지만 난 그것을 전진하는 방식으로 루프를 수행하는 방법을 모르겠어요? 아마도 피곤할 지 모르지만 내 루프는 여전히 다음 레코드 세트로 넘어 가서 에 붙어있어입니다. 내 루프를 해결하는 데 도움 주시기 바랍니다
UPDATE처럼 내 포맷이 복사 붙여 넣기에 손실 된
, 내 실제 코드는 같습니다 당신이 열기 전에 당신은 URL을 여러 번 변경하는
import csv
import urllib2
from bs4 import BeautifulSoup
f = open('nhlstats.csv', "w")
groups=['points', 'shooting', 'goaltending', 'defensive', 'timeonice', 'faceoffs', 'minor-penalties', 'major-penalties']
year = ["2016", "2015","2014","2013","2012"]
for yr in year:
for gr in groups:
url = "http://www.espn.com/nhl/statistics/player/_/stat/points/year/"+str(yr)
#www.espn.com/nhl/statistics/player/_/stat/points/year/2014/
page = urllib2.urlopen(url)
soup=BeautifulSoup(page, "html.parser")
pagecount = soup.findAll(attrs= {"class":"page-numbers"})[0].string
pageliteral = int(pagecount[5:])
for i in range(0,pageliteral):
number = int(((i*40) + 1))
URL = "http://www.espn.com/nhl/statistics/player/_/stat/points/sort/points/year/"+str(yr) + "/count/"+str(number)
page = urllib2.urlopen(url)
soup=BeautifulSoup(page, "html.parser")
for tr in soup.select("#my-players-table tr[class*=player]"):
row =[]
for ob in range(1,15):
player_info = tr('td')[ob].get_text(strip=True)
row.append(player_info)
f.write(str(yr) +","+",".join(row) + "\n")
f.close()
다음과 같이
이 시작하는 당신에게 csv 파일을 줄 것이다. 정확히 코드가 어떻게 보이나요? –
여러분의 의견을 들여 쓰는 들여 쓰기 오류는 실제로 내 복사본에서 stackoverflow로 붙여 넣기의 서식을 잃어 버렸습니다 ... 실제 서식으로 업데이트 중입니다. – ike