Python 在BeautifulSoup中提取多个Span标记中的内容

Python 在BeautifulSoup中提取多个Span标记中的内容,python,html,css,web-scraping,beautifulsoup,Python,Html,Css,Web Scraping,Beautifulsoup,我试图从多个span标记中提取字符串内容。HTML页面的快照是: <div class="secondary-attributes"> <span class="neighborhood-str-list"> Southeast </span> <address> 1234 Python Blvd S<br>Somewhere, NV 98765 </address&

我试图从多个span标记中提取字符串内容。HTML页面的快照是:

<div class="secondary-attributes">
    <span class="neighborhood-str-list">
        Southeast
    </span>
    <address>
        1234 Python Blvd S<br>Somewhere, NV 98765
    </address>
    <span class="biz-phone">
        (555) 123-4567
    </span>
</div>
代码编译时没有任何语法错误,但它并没有给出我所希望的结果:

['<span class="biz-phone">\n        (702) 476-5050\n    </span>', '<span class="biz-phone">\n        (702) 253-7296\n    </span>', '<
span class="biz-phone">\n        (702) 385-7912\n    </span>', '<span class="biz-phone">\n        (702) 776-7061\n    </span>', '<spa
n class="biz-phone">\n        (702) 221-7296\n    </span>', '<span class="biz-phone">\n        (702) 252-7296\n    </span>', '<span c
lass="biz-phone">\n        (702) 659-9101\n    </span>', '<span class="biz-phone">\n        (702) 355-9445\n    </span>', '<span clas
s="biz-phone">\n        (702) 396-3333\n    </span>', '<span class="biz-phone">\n        (702) 643-9851\n    </span>', '<span class="

biz-phone">\n        (702) 222-1441\n    </span>']
['\n(702)476-5050\n','\n(702)253-7296\n','<
span class=“biz phone”>\n(702)385-7912\n'、“\n(702)776-7061\n'、“\n(702)221-7296\n'、“\n(702)252-7296\n'、“\n(702)659-9101\n'、”\n(702)355-9445\n'、“\n(702)396-3333\n'、“\n(702)643-9851\n'、“\n(702)222-1441\n']
我的问题分为两部分:

  • 为什么运行程序时会出现
    span
    标记
  • 我怎样才能摆脱它们?我可以只做字符串编辑,但我觉得我不会充分利用BeautifulSoup软件包。还有更优雅的方式吗
  • 注意:在整个页面中有更多类似上面所示的HTML代码片段;有更多需要提取的
    (555)123-4567
    代码实例(即更多电话号码),因此我考虑使用
    find_all()

    先谢谢你

  • 返回标记列表(
    bs4.element.Tag
    ),而不是字符串

  • 正如@furas指出的,您希望访问每个标记上的
    text
    属性,以提取标记中的文本:

    phone\u number\u结果=[phone\u numbers.text.strip()
    查找汤中的电话号码。查找所有('span','biz phone')]


  • (你可能还想打电话给
    strip()

    使用
    电话号码。text
    甚至
    电话号码。text.strip()
    谢谢@furas,这就成功了!谢谢你,
    .text
    成功了!我不知道这个属性——我尝试了其他一些属性(例如,
    .contents
    ),但似乎没有帮助。不过,你的解决方案奏效了。
    ['<span class="biz-phone">\n        (702) 476-5050\n    </span>', '<span class="biz-phone">\n        (702) 253-7296\n    </span>', '<
    span class="biz-phone">\n        (702) 385-7912\n    </span>', '<span class="biz-phone">\n        (702) 776-7061\n    </span>', '<spa
    n class="biz-phone">\n        (702) 221-7296\n    </span>', '<span class="biz-phone">\n        (702) 252-7296\n    </span>', '<span c
    lass="biz-phone">\n        (702) 659-9101\n    </span>', '<span class="biz-phone">\n        (702) 355-9445\n    </span>', '<span clas
    s="biz-phone">\n        (702) 396-3333\n    </span>', '<span class="biz-phone">\n        (702) 643-9851\n    </span>', '<span class="
    
    biz-phone">\n        (702) 222-1441\n    </span>']