2016-11-18 66 views
0

所以我有一個網頁,其中有表格數據。下面是表的HTML代碼:使用美麗的湯解析特定的數據

<table class="confluenceTable"> 
    <tbody> 
     <tr> 
      <th class="confluenceTh"> 
      <p>Prefix</p> 
      </th> 
      <th class="confluenceTh"> 
      <p>Group</p> 
      </th> 
      <th class="confluenceTh"> 
      <p>Contact</p> 
      </th> 
      <th class="confluenceTh"> 
      <p>Dev/Test Lab</p> 
      </th> 
      <th class="confluenceTh"> 
      <p>Performance</p> 
      </th> 
     </tr> 
     <tr> 
      <td class="confluenceTd"> 
      <p> </p> 
      </td> 
      <td class="confluenceTd"> 
      <p> </p> 
      </td> 
      <td class="confluenceTd"> 
      <p> </p> 
      </td> 
     </tr> 
     <tr> 
      <th class="confluenceTh"> 
      <p> </p> 
      </th> 
      <th class="confluenceTh"> 
      <p> </p> 
      </th> 
      <th class="confluenceTh"> 
      <p> </p> 
      </th> 
     </tr> 
     <tr> 
      <td class="confluenceTd"> 
      <p>SEF00</p> 
      </td> 
      <td class="confluenceTd"> 
      <p>APTRA Vision</p> 
      </td> 
      <td class="confluenceTd"> 
      <p> </p> 
      </td> 
      <td class="confluenceTd"> 
      <p><a href="/somepage">VCD Lab</a> , <a href="/somepage">Test Lab</a></p> 
      </td> 
      <td class="confluenceTd"> 
      <p><a href="/display">Perf Lab</a></p> 
      </td> 
     </tr> 
     <tr> 
      <td class="confluenceTd"> 
      <p>SEF01</p> 
      </td> 
      <td class="confluenceTd"> 
      <p>In-Person Bill Payment</p> 
      </td> 
      <td class="confluenceTd"> 
      <p>Swamy PKV</p> 
      </td> 

我如何格式化我的Python代碼,這樣我只是得到前綴和集團列下的所有數據。到目前爲止,我已經試過這樣:

ii=1 
data=requests.get(url,auth=(username,password)) 
sample=data.content 
soup=BeautifulSoup(sample,'html.parser') 
for row in soup.find_all('tr')[1:154]: 
    datatocheck.append(row.get_text(separator='\t')) 
while(ii<=152): 
     print datatocheck[ii][0:30] 
     ii+=1 

這給了我下面的輸出:

SEF00 APTRA Vision   VCD Lab 
SEF01 In-Person Bill Payment S 

但我只想SEF00(前綴)和APTRA Vision(組),SEF01In-Person Bill Payment。不是其他欄。

另外,我不能改變我的HTML代碼。

回答

0

怎麼樣,如果ü做 如果SEF00於二:

它可以打印只是SEF00

+0

我並不完全明白。你可以添加一個示例代碼塊嗎? –

+0

我不在家我通過我的iPhone發佈所以,我會如果它的工作原理,如果它會我會在這裏發佈我認爲你應該做的是要求Python打印字符串,如果它有SEF00它你知道 – Daniel

0
soup = BeautifulSoup(html, 'lxml') 

for row in soup.find_all('tr')[3:]: # remove empty row 
    tds = [i.get_text(strip=True) for i in row.find_all('td')] 
    print(tds[0],tds[1]) 

出來:

SEF00 APTRA Vision 
SEF01 In-Person Bill Payment 

只是得到所有的TD行中,把它們放在一個列表中,而不是切片它

+0

好吧會做,但是這是一個問題,如果我使用HTML.parser而不是lxml?我嘗試了pip安裝lxml,但它總是失敗。 –

+0

at print(tds [0],tds [1]),我不斷收到IndexError:列表索引超出範圍ERROR消息。有什麼建議麼? –

+0

無論如何,你昨天給出的另一個解決方案工作。再次感謝! –