我的HTML就像:
<a class="title" href="">
<b>name
<span class="c-gray">position</span>
</b>
</a>
我想分别获取名称和位置字符串。所以我的脚本就像:
lia = soup.find('a',attrs={'class':'title'})
pos = lia.find('span').get_text()
lia.find('span').replace_with('')
name = lia.get_text()
print name.strip()+','+pos
虽然它可以胜任,但我认为这不是一种美好的方式。有更明智的想法吗?
答案 0 :(得分:3)
您可以这样使用.contents
方法:
person = lia.find('b').contents
name = person[0].strip()
position = person[1].text
答案 1 :(得分:1)
想法是找到a
元素,然后找到name
- 从内部b
元素获取第一个文本节点,并为position
- 获取span
元素的文字:
>>> a = soup.find("a", class_="title")
>>> name, position = a.b.find(text=True).strip(), a.b.span.get_text(strip=True)
>>> name, position
(u'name', u'position')