结果是<div class="font-160 line-110" data-container=".snippet container" data-html="true" data-placement="top" data-template='<div class="tooltip infowin-tooltip" role="tooltip"><div class="tooltip-arrow"><div class="tooltip-arrow-inner"></div></div><div class="tooltip-inner" style="text-align: left"></div></div>' data-toggle="tooltip" title="XIAMEN [CN]">
我怎么才能把"XIAMEN [CN]"从title后面拉出来。我尝试了find_all('title'),但这不返回匹配。我也不能从siblings调用任何一个来遍历我的结果。我甚至不能让find(text='XIAMEN [CN]')归还任何东西。
发布于 2016-10-11 21:30:39
from bs4 import BeautifulSoup
myHTML = 'what you posted above'
soup = BeautifulSoup(myHTML, "html5lib")
title = soup.find('div')['title']我们只是在这里搜索<div>标签,你可能想在体内更具体一些。
发布于 2016-10-11 22:24:10
您应该使用类或某些属性来选择div,调用find("div")将选择页面上的第一个div,而且title是一个属性而不是标记,因此一旦找到标记,就需要访问title属性。关于如何具体化和提取属性的几个示例
html = """<div class="font-160 line-110" data-container=".snippet container" data-html="true" data-placement="top" data-template='<div class="tooltip infowin-tooltip" role="tooltip"><div class="tooltip-arrow"><div class="tooltip-arrow-inner"></div></div><div class="tooltip-inner" style="text-align: left"></div></div>' data-toggle="tooltip" title="XIAMEN [CN]">"""
soup = BeautifulSoup(html, "html.parser")
# use the css classes
print(soup.find("div", class_="font-160 line-110")["title"])
# use an attribute value
print(soup.find("div", {"data-container": ".snippet container"})["title"])如果只有一个div具有属性,请查找div设置的title=True。
soup.find("div", title=True)您还可以组合这些步骤,即类和一个或多个属性。
发布于 2016-10-11 21:42:42
比另一个答案要安全一些
from bs4 import BeautifulSoup
myHTML = 'what you posted above'
soup = BeautifulSoup(myHTML, "html5lib")
div = soup.find('div')
title = div.get('title', '')  # safe way to check for the title, incase the div doesn't contain ithttps://stackoverflow.com/questions/39986997
复制相似问题