【问题标题】:Python BeautifulSoup find span inside classPython BeautifulSoup 在类中找到 span
【发布时间】:2016-07-06 08:25:58
【问题描述】:

我正在尝试创建一个 python 脚本,该脚本在来自一个类的垃圾邮件中找到一个特定的测试。不幸的是,我一直收到空回复或“无”。

它来自一个非常具体的页面,所以我会粘贴一小部分我试图找到的:

<tbody>
<tr class="zone-dedicated-availability" data-actions="refUnavailable" data-dc="" data-ref="160sk5" data-availability="3600-">

<td class="show-on-ref-unavailable elapsed-time-since-last-delivery" colspan="5">
<span qtlid="47402">
                                        Last server delivered: today at 01:59.
                                    </span><br><a style="font-     size:14px;" href=".." qtlid="50602">Go for a VPS-CLOUD<br><span style="font-size:0.9em;" qtlid="50615">(from £5.99 excl.VAT)</span></a>
</td>

我正在尝试从我的脚本中获取“最后一个服务器交付”的 tekst。我还在学习,所以希望得到帮助:

page = requests.get('...')
tree = page.content

soup = BeautifulSoup(tree)
table = soup.find('tbody', {'class': 'zone-dedicated-availability'})
print table 

我可能在 find 语句中遗漏了一些内容,因为这是我现在卡住的地方,尝试了一些不同的方法,但不确定如何获得所需的有效输出。

【问题讨论】:

  • 您提供的文档中没有tbody标签。
  • 我把它放在那里,我在那里的文字中说过,但现在添加它,如果这样更清楚的话。
  • 你在td之前没有tr标签吗?
  • 我用 tbody 更新了它。只是为了澄清。

标签: python beautifulsoup


【解决方案1】:

您是否尝试过寻找具有“区域专用可用性”类的表格行?您当前似乎正在搜索具有该类的表体,但无法找到它。

【讨论】:

    【解决方案2】:

    class 属性在tr 中,所以你需要使用这个:

    table = soup.find('tbody').find('tr', {'class': 'zone-dedicated-availability'}) 
    

    甚至更好:

    table = soup.find('tr', {'class': 'zone-dedicated-availability'}) 
    

    您也可以使用CSS selector and the select 方法:

    soup.select('tbody tr.zone-dedicated-availability')
    

    要获得你想要的数据是在qtlid="47402" 的第一个“跨度”中:

    In [19]: soup.find('tr', class_='zone-dedicated-availability').find('span', qtlid='47402').get_text(strip=True)
    Out[19]: 'Last server delivered: today at 01:59.'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-23
      • 2014-04-25
      相关资源
      最近更新 更多