2016-03-27 27 views
0

Selenium kullanarak bir html sayfasını ayıkladım ve verileri pandalar Dataframe'e besleyebileceğim bir tabloya/listeye koymak istiyorum.Bir liste veya tabloya html ayrıştırma

html BeautifulSoup 4

Bu HTML bir 349 satır uzanır
<tr class="result even"> 
    <td class="companyName" data-name="companyName"> 
     <a href="http://sgx.com/wps/portal/sgxweb/home/company_disclosure/stockfacts?page=1&amp;code=5TG" target="_parent"> 
     800 Super Holdings Limited 
     </a> 
    </td> 
    <td class="tickerCode" data-name="tickerCode"> 
     5TG 
    </td> 
    <td class="industry" data-name="industry"> 
     Commercial Services and Supplies 
    </td> 
    <td class="marketCap" data-name="marketCap"> 
     84.9 
    </td> 
    <td class="percentChange hidden" data-name="percentChange"> 
     - 
    </td> 
    <td class="priceVs52WeekHigh hidden" data-name="priceVs52WeekHigh"> 
     (12.04) 
    </td> 
    <td class="priceVs52WeekLow hidden" data-name="priceVs52WeekLow"> 
     18.75 
    </td> 
    <td class="beta5Yr hidden" data-name="beta5Yr"> 
     0.371 
    </td> 
    <td class="volume hidden" data-name="volume"> 
     0.02 mm 
    </td> 
    <td class="avgTradedVolM3 hidden" data-name="avgTradedVolM3"> 
     0.1 
    </td> 
    <td class="avgVolumeM3 hidden" data-name="avgVolumeM3"> 
     0.13 mm 
    </td> 
    <td class="floatPercentage hidden" data-name="floatPercentage"> 
     84.11 
    </td> 
    <td class="priceVolHistYr hidden" data-name="priceVolHistYr"> 
     19.95 
    </td> 
    <td class="totalRevenue" data-name="totalRevenue"> 
     152 
    </td> 
    <td class="ebitdaMargin hidden" data-name="ebitdaMargin"> 
     15.15 
    </td> 
    <td class="netProfitMargin hidden" data-name="netProfitMargin"> 
     11.77 
    </td> 
    <td class="eps hidden" data-name="eps"> 
     0.1 
    </td> 
    <td class="totalDebtEquity hidden" data-name="totalDebtEquity"> 
     78.47 
    </td> 
    <td class="totalRev1YrAnnGrowth hidden" data-name="totalRev1YrAnnGrowth"> 
     19.4 
    </td> 
    <td class="totalRev3YrAnnGrowth hidden" data-name="totalRev3YrAnnGrowth"> 
     18.17 
    </td> 
    <td class="totalRev5YrAnnGrowth hidden" data-name="totalRev5YrAnnGrowth"> 
     15.83 
    </td> 
    <td class="basicEpsIncl hidden" data-name="basicEpsIncl"> 
     0.1 
    </td> 
    <td class="returnOnEquity hidden" data-name="returnOnEquity"> 
     34.77 
    </td> 
    <td class="peRatio" data-name="peRatio"> 
     4.745 
    </td> 
    <td class="dividendYield" data-name="dividendYield"> 
     4.21 
    </td> 
    <td class="priceToBookRatio hidden" data-name="priceToBookRatio"> 
     1.448 
    </td> 
    <td class="avgBrokerReq hidden" data-name="avgBrokerReq"> 
     - 
    </td> 
    <td class="gtiScore hidden" data-name="gtiScore"> 
     47 
    </td> 
    <td class="gtiRankChange hidden" data-name="gtiRankChange"> 
     (73) 
    </td> 
    </tr> 

ile ekstre edilmiştir. Bunu bir tabloya/listeye nasıl dönüştürebilirim?

bs4 yerine lxml kullanmak daha kolay mı/hızlı mı?

+0

de, lxml biraz daha hızlı olacaktır çünkü beautifulsoup, lxml'nin üzerine kurulu bir ayrıştırıcı kullanır, ancak yalnızca bir sayfayı ayrıştırarak fark göz ardı edilebilir. Verileri bir tabloya veya bir listeye 'çevirmek' kadar, bir ebeveynin etiketine erişebilmek için güzelsoup belgelerini incelemelisiniz. – n1c9

cevap

2

Doğrudan pandas.read_html() numaralı pandalar veri tabanına yükleyebilirsiniz. Mevcut en iyi/yüklü ayrıştırıcıyı kullanır - hızı istiyorsanız lxml'u yükleyin.

+0

Denedim ve bana "ResultSet" türünde nesne okunamıyor hatası verdi. Ne yapmalıyım? –

+0

Bunu kazıyın. Daha önce yanlış bir şeyler yapıyordum .. –