使用BeautifulSoup在<b>和<br/>标签中间刮取数据

时间:2017-10-08 19:36:12

标签: python beautifulsoup

这就是HTML:

<td>
        <font face="Arial, sans-serif" size="-1">

                    <b>Home Phone: </b>507-383-1070<br>

                    <b>Cell Phone: </b>507-383-1070<br>

                    <b>E-Mail: </b><a href=mailto:macehrhardt@gmail.com>macehrhardt@gmail.com</a><br>

        </font>
</td>

我只想抓取Home PhoneCell Phone的数据,例如。 507-383-1070。你能帮我解决一下我将如何使用BeautifulSoup来解决这个问题。我尝试了多种方法,但没有找到任何方法。

2 个答案:

答案 0 :(得分:0)

您可以将soup.find_all与正则表达式一起使用。

>>> soup.find_all(text=re.compile('\d+(-\d+){2}'))
['507-383-1070', '507-383-1070']

您可能需要调整正则表达式,具体取决于您尝试提取的电话号码的格式。

答案 1 :(得分:0)

对于您提供的HTML,可以按如下方式提取它们:

from bs4 import BeautifulSoup

html = """<td>
        <font face="Arial, sans-serif" size="-1">
                    <b>Home Phone: </b>507-383-1070<br>
                    <b>Cell Phone: </b>507-383-1070<br>
                    <b>E-Mail: </b><a href=mailto:macehrhardt@gmail.com>macehrhardt@gmail.com</a><br>
        </font>
</td>"""

soup = BeautifulSoup(html, "html.parser")
entries = [b.next.next for b in soup.find_all('b')][:2]

print entries 

给你:

[u'507-383-1070', u'507-383-1070']