【发布时间】:2015-12-05 04:41:18
【问题描述】:
我第一次发帖。我正在使用 BeautifulSoup 4 和 python 2.7 (pycharm)。我有一个包含元素的网页,我需要提取标签为“薪水:”或“日期:”的特定元素,该页面包含多个列表。
问题:我似乎无法识别和提取特定文本。我已经搜索过这个网站并尝试过但没有成功。
示例 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 元素!
谢谢
【问题讨论】:
标签: python html beautifulsoup extract