python - 如何用 BeautifulSoup 解析这个 HTML 代码?

标签 python html beautifulsoup

我想用 BeautifulSoup 解析这个 HTML 代码。

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

June 2012 – Present (3 years 2 months)

但我明白了:

July 2012

这是我的 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

但是当我试图一直获取时,我只得到了一个。 我该如何解决我的问题?

提前致谢。

最佳答案

您需要使用<span>获取您的数据。使用 <time> 的方法只会给你内部文本,但 </time> 之外的文本不会像您的错误一样被打印。

为此,我们只需使用 <span>和属性 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)

关于python - 如何用 BeautifulSoup 解析这个 HTML 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522339/

相关文章:

python - 如何在html中使用正则表达式或其他方式在python中删除<p>标签下的属性?

python - Pandas groupby() transform() max() 带过滤器

python - py.test 在自定义 funcargs 中使用 monkeypatch

python - 基于列值和变量合成一个 numpy 数组/矩阵?

具有编辑功能的 JavaScript 资源规划组件/甘特图

javascript - 比较两个密码的 JS 脚本不起作用

python - 确定网页中的 HTML 元素以进行网页抓取

python - 使用 gensim 的 Word2vec 训练在 10 万个句子后开始交换

javascript - 让 JavaScript 创建一个完整的 li

Python 网页抓取查询