python - BeautifulSoup:获取另一个标签后面的标签文本

标签 python html beautifulsoup html-parsing

如何使用 BeautifulSoup 查找另一个标签的标签?在此示例中,我想要获取例如“0993 999 999”,它位于另一个带有“Telefon:”文本的 div 后面。

我尝试使用这个来获取它:

print parsed.findAll('div',{'class':"dva" })[3].text 

但是它不能正常工作。我认为必须有一种方法来告诉 BeautifulSoup 它就在“Telefon”文本后面或其他方式。

 <div class="kontakt">
        <h2 class="section-head">Kontaktné údaje</h2>
        <address itemprop="address"  itemscope itemtype="http://schema.org/PostalAddress" >
             <span itemprop="streetAddress" >SNP 12</span>, <span itemprop="postalCode" >904 01</span> <span itemprop="addressLocality" >Pezinok</span> </address>
        <div class="jedna">Telefon:</div>
        <div class="dva">013 / 688 27 78</div>
        <div class="jedna">Mobil:</div>
        <div class="dva">0993 999 999</div>
        <div class="jedna">Fax:</div
        <div class="dva">033 / 690 97 94</div>
        <div class="jedna">E-mail:</div>
        <div class="dva"><br /></div></div>

编辑:我尝试过这个,也不起作用。

tags = parsed.findAll('div',{'class':"jedna"})
for tag in tags:
    if tag.text=='Telefon:':
        print tag.next_siebling.string

你们能给我一个提示吗? 谢谢!

最佳答案

您可以使用find_next_sibling() :

# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup

data = u"""html here"""

soup = BeautifulSoup(data)
print soup.find('div', text='Telefon:').find_next_sibling('div', class_='dva').text
print soup.find('div', text='Mobil:').find_next_sibling('div', class_='dva').text

打印:

013 / 688 27 78
0993 999 999

仅供引用,您可以提取重复项并拥有一个很好的可重用函数:

def get_field_value(soup, field):
    return soup.find('div', text=field+':').find_next_sibling('div', class_='dva').text

soup = BeautifulSoup(data)
print get_field_value(soup, 'Telefon')  # prints 013 / 688 27 78
print get_field_value(soup, 'Mobil')  # prints 0993 999 999

希望有帮助。

关于python - BeautifulSoup:获取另一个标签后面的标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24662053/

相关文章:

python - 将 json 转换为 csv 时出现 "List index not in range"错误?

python - 使用帐户身份验证来验证是否已登录

javascript - 如何使用 jQuery 在一段时间后更改文本?

python - 我正在使用请求模块登录 Instagram 并在登录后检索用户信息

python - 使用 BeautifulSoup 从 HTML 页面提取 JavaScript 函数的参数

python - 打印列表项和索引

python - Flask:连接到 sqlite

javascript - 使用垂直框的 Twitter 关注者计数

javascript - 为什么 React App 在网页上出现两次?

python - 简单的 Python 网络爬虫与 BeautifulSoup