2017-10-05 6 views
0

나는 웹 사이트에서 테이블을 긁어 내려고했지만, 파이썬에서 Beautifulsoup로 알아낼 수없는 것 같습니다. 임 모르겠는 경우 테이블 형식 때문에,하지만 난 기본적으로 CSV 로이 테이블을 돌려 싶어요.파이썬으로 아름답게 수프를 뿌려서 웹 스크랩하기 - 자바 스크립트 테이블

from bs4 import BeautifulSoup 
import requests 

page = requests.geenter code heret("https://spotwx.com/products/grib_index.php?model=hrrr_wrfprsf&lat=41.03399&lon=-73.76291&tz=America/New_York&display=table") 
soup = BeautifulSoup(page.content, 'html.parser') 
print(soup.prettify) 

이 데이터 테이블을 분리하는 방법에 대한 조언이 있으십니까? 너무 많은 Beautifulsoup 튜토리얼을 확인했지만 HTML은 대부분의 참조와 다르게 보입니다. 사전에 많은 도움을 주셔서 감사합니다. -

답변

1

시도해보십시오. 해당 사이트의 표가 동적으로 생성되므로 requests만을 사용하여 결과를 얻을 수 없습니다.

from selenium import webdriver 
from bs4 import BeautifulSoup 
import csv 

outfile = open("spotwx.csv", "w", newline='') 
writer = csv.writer(outfile) 

driver = webdriver.Chrome() 
driver.get("https://spotwx.com/products/grib_index.php?model=hrrr_wrfprsf&lat=41.03399&lon=-73.76291&tz=America/New_York&display=table") 
soup = BeautifulSoup(driver.page_source, 'lxml') 

driver.quit() 
titles = soup.select("table#example")[0] 
list_row =[[tab_d.text for tab_d in item.select('td')] 
       for item in titles.select('tr')] 

for data in list_row: 
    print(' '.join(data)) 
    writer.writerow(data) 
outfile.close() 
+0

답장을 보내 주셔서 감사합니다. 나는 Webdriver에 익숙하지 않지만 실시간으로 새로 고쳐야 할 필요는 없습니다. (절대적으로 필요하지 않으면 Webdriver를 사용하지 않는 것을 선호합니다). 단순히 요청을 처리하면 soup.prettify 코드에 필요한 데이터가 표시되지만 표로 추출하는 방법을 파악할 수 없습니다. 도와 주셔서 다시 한 번 감사드립니다! –

+0

위 코드를 수행 할 때 오류가 발생합니다. selenium.common.exceptions.WebDriverException : 메시지 : 'chromedriver'실행 파일이 PATH에 있어야합니다. https://sites.google.com/a/chromium.org/chromedriver/home –

+0

을 참조하십시오. 먼저 작동해야합니다. 그렇지 않다면 두 번째 것을 찾으십시오. 1.'driver = webdriver.Chrome ('C : /path/to/chromedriver.exe')'2. driver = webdriver.Chrome ('/ path/to/chromedriver') .Btw, 너의 시스템에, 나는 그 길을 의미했다. 감사. – SIM