2017-11-15 1 views
0

저는 파이썬에 새로운 경험이 있으며 웹 페이지에서 하나의 테이블을 긁어 내려고합니다. Chrome에서 'inspect'를 통해 html에 액세스했습니다. 웹 페이지는 여기에 있습니다 :찾기를 사용하여 파이썬에서 단일 html 테이블을 긁음

https://www.basketball-reference.com/players/a/abdelal01.html

다음은 내가 "급여"라는 페이지에 테이블이

import bs4 
from urllib2 import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

#name a page to scrape 
my_url = 'https://www.basketball-reference.com/players/a/abdelal01.html' 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 

#perform html parsing 
page_soup = soup(page_html, "html.parser") 

사용한 코드입니다. 이 표를 페이지의 제목과 함께 긁어서 csv 파일에 넣고 싶습니다. 그러나, 나는 첫째로 급여 테이블을 얻을 필요가있다. 나는 내가에 관심이 하나의 테이블 이후 BeautifulSoup에서 find 기능을 사용하려고 한 문제는 내가 다음 코드를 실행할 때 내가 어떤 결과를 얻을 수 없다는 것입니다 :. 나는 때 크롬과를 사용하고

page_soup.find("table", id = "all_salaries") 

을 나는 ID가 "all_salaries"인 것처럼 보이는 테이블의 "inspect"도구를 사용하지만 결과가 없습니다. 내가 결과를 얻지 못하는 이유가 있습니까? 이 작업을 수행하는 적절한 방법은 무엇입니까?

답변

1

이것은 csv 작가와 find_all 함수를 통해 수행 할 수 있습니다.

import bs4, csv 
from urllib2 import urlopen as uReq 
from bs4 import BeautifulSoup as soup 

#name a page to scrape 
my_url = 'https://www.basketball-reference.com/players/a/abdelal01.html' 

uClient = uReq(my_url) 
page_html = uClient.read() 
uClient.close() 

#perform html parsing 
page_soup = soup(page_html, "html.parser") 

with open('csvOut.csv','w') as myFile: 
    writer = csv.writer(myFile, lineterminator='\n') 
    table = page_soup.find({"class" : "full_table"}) 
    for row in page_soup.find_all("tr"): 
     rowTds = [td.text for td in row.find_all("td")] 
     if len(rowTds): 
      writer.writerow(rowTds) 
+0

테이블을 표시하는 방법은 무엇입니까? 또는 적어도 csv 파일을 폴더로 보내시겠습니까? – jvalenti

+0

Excel 또는 메모장에서 엽니 다. – Neil

관련 문제