使用BeautifulSoup导入特定列的数据

2024-09-28 21:51:46 发布

您现在位置:Python中文网/ 问答频道 /正文

<h3 id="LABandServerNamingConvention-:"><a href="/display/ES/Lab+Org+Code+Summary+Listing">Lab Org Code Summary Listing</a>:</h3>
<div class="sectionColumnWrapper">
  <div class="sectionMacro">
    <div class="sectionMacroRow">
      <div class="columnMacro">
        <div class="table-wrap">
          <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>SEE00</p>
                </td>
                <td class="confluenceTd">
                  <p>Entertainment</p>
                </td>
<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="/pages/viewpage.action?pageId=83909590">VCD Lab</a> , <a href="/display/ES/SEF00+%28+Aptra+Vision%29+-+Virtual+Lab+Details">Test Lab</a></p></td>

我有一个表,有5列,其中2列是为这个特定条目填写的。 如何从这个HTML代码段将表中的行数据转换成python代码。我用的是美素。这就是我迄今为止所尝试的:

data           = requests.get(url,auth=(username,password))
sample         = data.content
soup           = BeautifulSoup(sample,'html.parser')
article_text   = ' '
article        = soup.findAll('td', {'class' : "confluenceTd" })    
for element in article:
article_text += '\n' + ''.join(element.findAll(text = True))

我想得到“SEE00”和“娱乐”。你知道吗


Tags: textorgdivesdisplayarticlelabtr
1条回答
网友
1楼 · 发布于 2024-09-28 21:51:46
from bs4 import BeautifulSoup
doc = '''<h3 id="LABandServerNamingConvention-:"><a href="/display/ES/Lab+Org+Code+Summary+Listing">Lab Org Code Summary Listing</a>:</h3>
<div class="sectionColumnWrapper"><div class="sectionMacro"><div class="sectionMacroRow"><div class="columnMacro"><div class="table-wrap"><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>SEE00</p></td><td class="confluenceTd"><p>Entertainment</p></td>
'''
soup = BeautifulSoup(doc, 'lxml')

for row in soup.find_all('tr'):
    print(row.get_text(separator='\t')) # this separator is only for format, you can use whatever you want

输出:

Prefix  Group   Contact Dev/Test Lab    Performance
SEE00   Entertainment   

可以使用slice控制for循环:

for row in soup.find_all('tr')[1:]:

这只会打印

SEE00   Entertainment 

更新:

在:

for row in soup.find_all('tr'):
    row_data = row.get_text(strip=True, separator='|').split('|')[:2]
    print(row_data)

输出:

['Prefix', 'Group']
['SEE00', 'Entertainment']
['SEF00', 'APTRA Vision']

相关问题 更多 >