Python 如何使用BeautifulSoup解析此HTML代码?

Python 如何使用BeautifulSoup解析此HTML代码?,python,html,beautifulsoup,Python,Html,Beautifulsoup,我想用BeautifulSoup解析这段HTML代码 事实上,对于每项工作,我都希望获得时间和持续时间。 例如,我想获得: 2012年6月至今(3年2个月) 但我明白了: 2012年7月 这是我的html代码: #!/usr/bin/env python # -*- coding: utf-8 -*- from bs4 import BeautifulSoup html_doc = """ <div id="background-experience" class="backgroun

我想用BeautifulSoup解析这段HTML代码

事实上,对于每项工作,我都希望获得时间和持续时间。 例如,我想获得:

2012年6月至今(3年2个月)

但我明白了:

2012年7月

这是我的html代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup

html_doc = """
<div id="background-experience" class="background-experience edit-default ">
<h3>Experience</h3>
<div id="experience-312465350" class="editable-item section-item current-position">
<div id="experience-312465350-view">
<header>
<h5 class="experience-logo" aria-hidden="true">
<a href="http://www.linkedin.com/company/1288?trk=ppro_cprof">
<img class="lazy-load" src="https://static.licdn.com/scds/common/u/img/spacer.gif" data-li-src="https://media.licdn.com/media/p/5/005/00e/318/39cf760.png" alt="">
</a>
</h5>
<h4>
<a href="https://www.linkedin.com/title/president-%26-ceo?trk=pprofile_title" title="Learn more about this title">President &amp; CEO</a>
</h4>
<h5>
<a href="http://www.linkedin.com/company/1288?trk=ppro_cprof" dir="auto">Yahoo!</a>
</h5>
</header>
<span class="experience-date-locale">
<time>July 2012</time> – Present (3 years 1 month)<span class="locality">Sunnyvale, CA</span>
</span>
</div>
</div>
<div id="experience-297858215" class="editable-item section-item current-position">
<div id="experience-297858215-view">
<header>
<h5 class="experience-logo" aria-hidden="true">
<a href="http://www.linkedin.com/company/2646?trk=ppro_cprof">
<img class="lazy-load" src="https://static.licdn.com/scds/common/u/img/spacer.gif" data-li-src="https://media.licdn.com/media/p/2/000/1d0/30a/07cd201.png" alt="">
</a>
</h5>
<h4>
<a href="https://www.linkedin.com/title/board-of-directors?trk=pprofile_title" title="Learn more about this title">Board of Directors</a>
</h4>
<h5>
<a href="http://www.linkedin.com/company/2646?trk=ppro_cprof" dir="auto">Walmart</a>
</h5>
</header>
<span class="experience-date-locale">
<time>June 2012</time> – Present (3 years 2 months)</span>
</div>
</div>
<script>$(function(){if(LI.Dialog){LI.Dialog().submitEvent.subscribe(function(type,args){var positionID;if(args[1]=='removePositionDialog'&&WebTracking&&WebTracking.trackUserAction){if(args[2]&&args[2].positionID){positionID=args[2].positionID;}WebTracking.trackUserAction('nprofile-edit-position-remove-submit',{positionID:positionID});}});}});</script>
</div>
"""
soup = BeautifulSoup(html_doc,'html.parser')
print soup.time.string
#/usr/bin/env python
#-*-编码:utf-8-*-
从bs4导入BeautifulSoup
html_doc=“”
经验
2012年7月至今(3年1个月)加利福尼亚州桑尼维尔
2012年6月至今(3年2个月)
$(function(){if(LI.Dialog){LI.Dialog().submitEvent.subscribe(function(type,args){var positionID;if(args[1]='removePositionDialog'&&WebTracking&&WebTracking&&WebTracking.trackUserAction){if(args[2]&&args[2].positionID){positionID=args[2].positionID;}webtrackUserAction('nprofile-edit-positionID:positionID};});
"""
soup=BeautifulSoup(html\u doc,'html.parser')
打印soup.time.string
但当我一直试图获得的时候,我只得到了一个。 我怎样才能解决我的问题


提前感谢。

您不应该使用
.time
,因为这只会获取这些元素的内部内容-因此,不包含文本
“–Present(3年2个月)”

相反,使用
experience date locale
类搜索元素,该类将是包含所需全部文本的
span
s。然后,使用
BeautifulSoup
.text
仅获取其文本内容(
将不会被渲染)

为了完整起见,以下是我的代码(未经测试):

spans = soup.find_all('span', {'class': 'experience-date-locale'})
for span in spans:
    print(span.text)

您需要使用
获取数据。使用
的方法将只提供内部文本,而
外部的文本将不会打印,因为这是您的错误

为此,我们只需使用
和属性
experience date locale

使用以下代码段分析数据:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_doc)
all_spans = soup.find_all('span', 'experience-date-locale')

parsed_content = []

for span in all_spans:
    parsed_content.append(span.text)