【发布时间】:2016-07-14 14:59:39
【问题描述】:
我使用 Selenium 提取了一个 html 页面,并且我想将数据放入一个表格/列表中,我可以将其输入到 pandas Dataframe 中。
用 Beautifulsoup 4 提取的 html
<tr class="result even">
<td class="companyName" data-name="companyName">
<a href="http://sgx.com/wps/portal/sgxweb/home/company_disclosure/stockfacts?page=1&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>
这个 html 又延伸了 349 行。我怎样才能把它变成一个表格/列表?
使用 lxml 代替 bs4 会更容易/更快吗?
【问题讨论】:
-
好吧,lxml 会稍微快一些,因为beautifulsoup 使用了一个基于lxml 构建的解析器,但是如果你只是解析一个页面,那么差异可以忽略不计。至于将数据“转换”为表格或列表,您应该查看 beautifulsoup 文档以访问父标签的子标签。
标签: python beautifulsoup lxml