2016-08-07 4 views
-1

웹 사이트에서 테이블을 긁어 내고 판다 데이터 프레임으로 읽는 코드가 있습니다. 그러나 이것은 웹 사이트 디자인 방법 때문에 for 루프를 통해 이루어집니다. 따라서, 테이블이 모두 같은 name 예와 태그 : 그들은 df 이름웹 스크래핑을 통해 얻은 데이터 프레임을 병합합니다.

코드

soup = bs4.BeautifulSoup(driver.page_source, "html.parser") 
    for thead in soup.select(".data-point-container table thead"): 
     tbody = thead.find_next_sibling("tbody") 

     table = "<table>%s</table>" % (str(thead) + str(tbody)) 

     df = pandas.read_html(str(table))[0] 

     print(df) 
     print('-------------') 

결과

 Table1 FY2012 FY2013 FY2014 FY2015 Last 12 Months 
0 item1 value1 value2 value3 value4 value5 
1 item2 value1 value2 value3 value4 value5 
2 item3 value1 value2 value3 value4 value5 
3 item4 value1 value2 value3 value4 value5 
4 item5 value1 value2 value3 value4 value5 
5 item6 value1 value2 value3 value4 value5 
------------- 

    Table2 FY2012 FY2013 FY2014 FY2015 Last 12 Months 
0 item1 value1 value2 value3 value4 value5 
1 item2 value1 value2 value3 value4 value5 
2 item3 value1 value2 value3 value4 value5 
3 item4 value1 value2 value3 value4 value5 
------------- 

    Table3 FY2012 FY2013 FY2014 FY2015 Last 12 Months 
0 item1 value1 value2 value3 value4 value5 
1 item2 value1 value2 value3 value4 value5 
2 item3 value1 value2 value3 value4 value5 
3 item4 value1 value2 value3 value4 value5 
4 item5 value1 value2 value3 value4 value5 
5 item6 value1 value2 value3 value4 value5 
------------- 

    Table4 FY2012 FY2013 FY2014 FY2015 Last 12 Months 
0 item1 value1 value2 value3 value4 value5 
1 item2 value1 value2 value3 value4 value5 
2 item3 value1 value2 value3 value4 value5 
3 item4 value1 value2 value3 value4 value5 
4 item5 value1 value2 value3 value4 value5 
5 item6 value1 value2 value3 value4 value5 
6 item7 value1 value2 value3 value4 value5 
7 item8 value1 value2 value3 value4 value5 

에서 태그 나에게 방법이 있나요 모든 데이터 프레임을 하나의 데이터 프레임으로 결합/병합 할 수 있습니까?

+1

다시 말씀 드리지만, DataFrames를 병합하는 데는 많은 질문이 있습니다. 그리고 우리는 여러분이 시도한 것을보고이 문제가이 사이트에 이미있는 다른 것과 크게 다른 것을보고 싶습니다. 위로로서, 팬더 병합 문서를 살펴보십시오. – Kartik

+0

다시. 나는 아이디어를 요구하고있다. 위로로, 귀하의 의견에 감사드립니다. –

답변

1

많은 데이터 프레임을 병합하면되므로 목록에서 수집 한 다음 pd.concat을 사용하여 병합하면됩니다. 이 같은

뭔가 작업을해야합니다 :

dataframes = [] 

for thread in soup.select(...): 

    #your scraper logic here 

    df = pandas.read_html(...) 
    dataframes.append(df) 

pd.concat(dataframes) 

가 도움이됩니까?

관련 문제