代码之家  ›  专栏  ›  技术社区  ›  puppet

Pandas read_html未命中具有多行的表

  •  0
  • puppet  · 技术社区  · 6 年前

    我正在抓取一个网站,为了得到我正在使用的桌子 pd.read_html .

    我让节点执行以下操作:

    table=WebDriverWait(browser,10).until(EC.presence_of_element_located((
    By.XPATH,'//tbody[ancestor::div[contains(@id,"cornerOddsDiv")]]')))
    
    newt=pd.read_html(table.get_attribute('outerHTML'))
    

    值错误:找不到表

    为表节点提供以下输出:

    table.get_attribute('outerHTML')
    
    >>'<tbody><tr><th colspan="10" align="center" class="bg1">365 Corner Odds</th></tr><tr bgcolor="#FCEAAB"><td colspan="10" align="center"><strong>Over/Under</strong></td></tr><tr onclick="goCorner(1510721)" style="cursor:pointer;" align="center" class="bg1" id="trCornerTotal" odds="1.19,0.25,0.72"><td width="14%" bgcolor="#EBF2F8">early</td><td width="10%" class="bg2">1 </td><td width="10%" class="bg2">10.5</td><td width="10%" class="bg2">0.8</td><td width="6%" class="bg2"><a href="http://data.nowgoal.com/history/corner.aspx?id=1510721&amp;companyid=8" target="_blank">detail</a></td><td width="14%" bgcolor="#EBF2F8">0.25</td><td width="10%" class="bg2">1</td><td width="10%" class="bg2">0.72</td><td width="10%" class="bg2">0.8</td><td width="6%" class="bg2"><a href="http://data.nowgoal.com/history/corner.aspx?id=1510721&amp;companyid=8" target="_blank">detail</a></td></tr></tbody>'
    

    1 回复  |  直到 6 年前
        1
  •  0
  •   puppet    6 年前

    我终于找到了答案。节点的结构如下

    <div>
       <div>
         <table>
            <tbody>
               <tr>..</tr>
               <tr>..</tr>
               ...
            </tbody>
    
    Etc
    

    关键是,由于我不知道的原因,我没有传递tbody的节点,而是必须传递table节点,然后在使用tbody时它与其他节点一样工作良好。

    所以,应该是:

    table=WebDriverWait(browser,10).until(EC.presence_of_element_located((
    By.XPATH,'//table[contains(@class,"bhTable") and 
    ancestor::div[contains(@id,"cornerOddsDiv")]]')))