Python 将html解析为列表或表

Python 将html解析为列表或表,python,beautifulsoup,lxml,Python,Beautifulsoup,Lxml,我使用Selenium提取了一个html页面,我想将数据放入一个表/列表中,然后将其输入到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

我使用Selenium提取了一个
html
页面,我想将数据放入一个表/列表中,然后将其输入到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&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>

5TG
商业服务和用品
84.9
-
(12.04)
18.75
0.371
0.02毫米
0.1
0.13毫米
84.11
19.95
152
15.15
11.77
0.1
78.47
19.4
18.17
15.83
0.1
34.77
4.745
4.21
1.448
-
47
(73)
这个html又延伸了349行。如何将其转换为表格/列表


使用lxml而不是bs4是否更容易/更快

您可以使用直接将其加载到熊猫数据帧中。如果您需要速度,它将使用最好的可用/已安装的解析器-install
lxml

您可以使用将其直接加载到pandas数据帧中。如果你想提高速度,它将使用最好的可用/已安装的解析器-install
lxml

好吧,lxml会稍微快一点,因为beautifulsoup使用的是一个构建在lxml之上的解析器,但是如果你只解析一个页面,那么差异可以忽略不计。至于将数据“转换”为表或列表,您应该查看beautifulsoup文档以访问父标记的子标记。好的,lxml会稍微快一点,因为beautifulsoup使用一个构建在lxml之上的解析器,但是如果您只解析一个页面,则差异可以忽略不计。至于将数据“转换”为表或列表,您应该查看beautifulsoup文档以访问父标记的子项。我尝试了它,但它给了我错误
无法读取“ResultSet”类型的对象
。我该怎么办?我试过了,它给了我一个错误,
无法读取'ResultSet'类型的对象。
。我该怎么办?