2014-12-26 85 views
1

如何使用美麗的湯找到屬於此條件下的頁面上的所有文本?解析HTML中特定標籤下的文本,Python

<tr> 
    <td class="d_g_l_e" style="border-right:none;」> 
     <img src="/d2l/img/LP/pixel.gif" width="20" height="20" alt=「」 
    </td> 
    <th scope="row" class="d_gt d_ich" style="border-left:none;」> 
     <div class="dco」> 
      <div class="dco_c」> 
       <div class="dco」> 
        <div class="dco_c」> 
         <strong> **EXTRACT THIS (NAME)** </strong> 
        </div> 
       </div> 
      </div> 
     </div> 
    </th> 
<td class="d_gn d_gr d_gt」> 
    <div class="dco」> 
     <div class="dco_c」> 
      <div class="dco」> 
       <div class="dco_c" style="text-align:right;」> 
        <div style="text-align:center;display:inline;」> 
         <label id="z_c"> **EXTRACT THIS (GRADE)** </label> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
</td> 
<td class="d_gn d_gr d_gt">&nbsp;</td> 
</tr> 

我想讓程序掃描整個html頁面並收集這個表單中出現的所有變量。如果「tr」標籤(我正在查找的主標籤)在其下面同時具有NAME和GRADE,請將該名稱添加到列表(List1)中,然後將該等級添加到單獨的列表(List2)中。如果其中一個在「tr」標籤下面缺失,請跳過它,不要記錄任何內容。因此,通過腳本完成掃描頁面時,列表看起來是這樣的:

List1 = [Grade 1, Grade 2, Grade 3, Grade 4] 
List2 = [10/20, 20/40, 50/50, 33/44] 

另外,從年級到年級,前檔次文字變化「Z」的標籤ID。 z_a,z_b,z_c。

回答

1

對於頁面上的每個tr,找到thlabel標籤內strong標籤td內:

soup = BeautifulSoup(data) 

for row in soup.find_all('tr'): 
    grade = row.select('th strong') 
    name = row.select('td label') 
    if grade and name: 
     print grade[0].text, name[0].text 
+0

曾爲完美,太感謝你了! –