2013-05-12 2 views
0

이 페이지의 일부 링크를 다 고칩니다.링크를 당기고 파이썬에서 해당 페이지를 긁음

http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/wnba/teams/pastresults/2012/team665231.html 

이것은 내가 원하는 링크를 얻습니다.

boxurl = urllib2.urlopen(url).read() 
soup = BeautifulSoup(boxurl) 
boxscores = soup.findAll('a', href=re.compile('boxscore')) 

페이지의 모든 상자 스코어를 마킹하고 싶습니다. 나는 이미 박스 스코어를 긁어 모으기위한 코드를 만들었지 만 나는 그것들을 얻는 방법을 모른다.

편집 나는 HTML 태그를 제거합니다 때문에이 방법이 더 나은 것 같아요. 나는 아직도 그들을 여는 법을 알 필요가있다.

for link in soup.find_all('a', href=re.compile('boxscore')): 
    print(link.get('href')) 

EDIT2 : 이 내가 페이지의 첫 번째 링크에서 데이터의 일부를 긁어 방법이다.

url = 'http://www.covers.com/pageLoader/pageLoader.aspx?page=/data/wnba/results/2012/boxscore841602.html' 


boxurl = urllib2.urlopen(url).read() 
soup = BeautifulSoup(boxurl) 
def _unpack(row, kind='td'): 
    return [val.text for val in row.findAll(kind)] 

tables = soup('table') 
linescore = tables[1] 
linescore_rows = linescore.findAll('tr') 
roadteamQ1 = float(_unpack(linescore_rows[1])[1]) 
roadteamQ2 = float(_unpack(linescore_rows[1])[2]) 
roadteamQ3 = float(_unpack(linescore_rows[1])[3]) 
roadteamQ4 = float(_unpack(linescore_rows[1])[4]) 

print roadteamQ1, roadteamQ2, roadteamQ3, roadteamQ4 

그러나 이것을 시도 할 때.

url = 'http://www.covers.com/pageLoader/pageLoader.aspx? page=/data/wnba/teams/pastresults/2012/team665231.html' 
boxurl = urllib2.urlopen(url).read() 
soup = BeautifulSoup(boxurl) 

tables = pages[0]('table') 
linescore = tables[1] 
linescore_rows = linescore.findAll('tr') 
roadteamQ1 = float(_unpack(linescore_rows[1])[1]) 
roadteamQ2 = float(_unpack(linescore_rows[1])[2]) 
roadteamQ3 = float(_unpack(linescore_rows[1])[3]) 
roadteamQ4 = float(_unpack(linescore_rows[1])[4]) 

이 오류가 발생합니다. 테이블 = pages0형식 오류는 'STR'객체는

print pages[0] 

정상 같은 첫 번째 링크의 HTML을 모두 뱉어 호출하지 않습니다. 잘하면 그것은 너무 혼란스럽지 않습니다. 요약하면 지금은 링크를 얻을 수 있지만 여전히 링크를 얻을 수 있습니다. 첫 번째 페이지는 그래서

이 같은
+0

당신이로 해당 페이지를 사용하는 경우 "크롤링"베이스 - 당신은 [scrapy] (http://scrapy.org) –

+0

을 살펴볼 수 있습니다. 이제 질문을 분명히 했으므로 이전 답변을보고 싶을 것입니다. http://stackoverflow.com/questions/ 15866297/matching-specific-table-within-html-beautifulsoup/15866957 # 15866957 당신이해야 할 일은 체계적으로 작업하는 것뿐입니다. – Vorsprung

+0

나는 원하는 테이블을 찾아서 긁을 수 있습니다. 이 경우 웹 페이지의 두 번째 테이블입니다. 그래서 tables = soup ('table') linescore = 테이블 [1]은 내가 원하는 테이블을 선택합니다. 문제가있는 곳은 링크에서 웹 페이지를 연 다음 테이블을 선택하는 것입니다. – user2333196

답변

1

뭔가, 배열로 발견 된 링크의 모든 페이지를 가져옵니다 페이지 [0], 두 번째 페이지 [1] 등

boxscores = soup.findAll('a', href=re.compile('boxscore')) 
basepath = "http://www.covers.com" 
pages=[] 
for a in boxscores: 
    pages.append(urllib2.urlopen(basepath + a['href']).read()) 
+0

그래, 그거 작동하지만 나는 그걸로 다쳤어. 나는 원래의 질문에서 더 많은 문제를 설명 할 것이다. – user2333196

관련 문제