python – 使用BeautifulSoup提取特定的dl和dd列表元素
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 使用BeautifulSoup提取特定的dl和dd列表元素,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1735字,纯文字阅读大概需要3分钟。
内容图文
我第一次发帖.我正在使用BeautifulSoup 4和python 2.7(pycharm).我有一个包含元素的网页,我需要提取标签为“Salary:”或“Date:”的特定元素,该页面包含多个列表.
问题:我似乎无法识别和提取特定文本.我搜索了这个网站并尝试没有成功.
示例html:
<dl><dt>Date:</dt><dd>13 September 2015</dd><dt>Salary:</dt><dd>Starting at £40,130 per annum.</dd></dl><dl><dt>Date:</dt><dd>15 December 2015</dd><dt>Salary:</dt><dd>Starting at £22,460 per annum.</dd></dl><dl><dt>Date:</dt><dd>10 January 2014</dd><dt>Salary:</dt><dd>Starting at £18,160 per annum.</dd></dl>
我尝试过的代码没有成功:
r = requests.get("http://www.mywebsite.com/test.html")
soup = BeautifulSoup(r.content, "html.parser")
dl_data = soup.find_all("dl")
for dlitem in dl_data:
print dlitem.find("dt",text="Date:").parent.findNext("dd").contents[0]
print dlitem.find("dt",text="Salary:").parent.findNext("dd").contents[0]
预期结果:
13 September 2015
15 December 2015
10 January 2014
Starting at £40,130 per annum.
Starting at £22,460 per annum.
Starting at £18,160 per annum.
实际结果:
print dlitem.find("dt",text="Date:").parent.findNext("dd").contents[0]
AttributeError: 'NoneType' object has no attribute 'parent'
我已经尝试了这个代码的多种变体并绕圈了,我想出了如何将所有dd元素打印到屏幕上,而不是特定的dd元素!
谢谢
解决方法:
如果订单不重要,只需进行一些更改:
...
dl_data = soup.find_all("dd")
for dlitem in dl_data:
print dlitem.string
结果:
13 September 2015
Starting at £40,130 per annum.
15 December 2015
Starting at £22,460 per annum.
10 January 2014
Starting at £18,160 per annum.
您的最新要求:
for item in list(zip(soup.find_all("dd")[0::3],soup.find_all("dd")[2::3])):
date, salary = item
print ', '.join([date.string, salary.string])
输出:
13 September 2015, 100
14 September 2015, 200
内容总结
以上是互联网集市为您收集整理的python – 使用BeautifulSoup提取特定的dl和dd列表元素全部内容,希望文章能够帮你解决python – 使用BeautifulSoup提取特定的dl和dd列表元素所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。