在BeautifulSoup中提取标题后的字符串

时间:2016-10-11 21:24:47

标签: python html beautifulsoup

html结果为<div class="font-160 line-110" data-container=".snippet container" data-html="true" data-placement="top" data-template='&lt;div class="tooltip infowin-tooltip" role="tooltip"&gt;&lt;div class="tooltip-arrow"&gt;&lt;div class="tooltip-arrow-inner"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tooltip-inner" style="text-align: left"&gt;&lt;/div&gt;&lt;/div&gt;' data-toggle="tooltip" title="XIAMEN [CN]">

如何在"XIAMEN [CN]"之后立即取出title。我试过find_all('title'),但这不会返回匹配项。我也不能从siblings中调用任何一个来追溯结果。我甚至无法让find(text='XIAMEN [CN]')返回任何东西。

3 个答案:

答案 0 :(得分:1)

您应该使用类或某些属性来选择div,调用find("div")将选择页面上的第一个div, title 是属性而不是标记,因此您需要找到标记后,访问标题属性。一些如何具体的示例并提取属性

html = """<div class="font-160 line-110" data-container=".snippet container" data-html="true" data-placement="top" data-template='&lt;div class="tooltip infowin-tooltip" role="tooltip"&gt;&lt;div class="tooltip-arrow"&gt;&lt;div class="tooltip-arrow-inner"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="tooltip-inner" style="text-align: left"&gt;&lt;/div&gt;&lt;/div&gt;' 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)

您还可以组合这些步骤,即类和一个或多个属性。

答案 1 :(得分:0)

from bs4 import BeautifulSoup

myHTML = 'what you posted above'
soup = BeautifulSoup(myHTML, "html5lib")
title = soup.find('div')['title']

我们只是在这里搜索<div>标签,您可能希望在体内更具体。

答案 2 :(得分:0)

比其他答案稍微安全一些

https://image-charts.com/chart?
&chs=150x150
&cht=qr
&chl=Hello world
&choe=UTF-8