所以我有一个网页,里面有表格数据。以下是该表的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代码,以便我只获取Prefix和Group列下的所有数据。到目前为止,我已经尝试过这个:
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
(群组),SEF01
和In-Person Bill Payment
。不是其他专栏。
另外,我无法更改HTML代码。
答案 0 :(得分:0)
如果你这样做怎么样? 如果是ii中的SEF00:
它可能只打印SEF00
答案 1 :(得分: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,将它们放入列表中,然后将其切片