Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用beautifulsoup分别获取节点文本和子标记_Python_Beautifulsoup - Fatal编程技术网

Python 如何使用beautifulsoup分别获取节点文本和子标记

Python 如何使用beautifulsoup分别获取节点文本和子标记,python,beautifulsoup,Python,Beautifulsoup,我的html类似于: <a class="title" href=""> <b>name <span class="c-gray">position</span> </b> </a> 虽然它可以做的工作,我不认为是一个美丽的方式。有什么更好的想法吗?这个想法是定位a元素,然后,对于名称-从内部b元素获取第一个文本节点,对于位置-获取span元素的文本: >>> a = soup.

我的html类似于:

<a class="title" href="">
    <b>name 
    <span class="c-gray">position</span>
    </b>
</a>

虽然它可以做的工作,我不认为是一个美丽的方式。有什么更好的想法吗?

这个想法是定位
a
元素,然后,对于
名称
-从内部
b
元素获取第一个文本节点,对于
位置
-获取
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')

您可以通过以下方式使用
.contents
方法:

person = lia.find('b').contents
name = person[0].strip()
position = person[1].text

好吧~我只是懒得看文档,只知道get_text(),shame@milowang
.text()
.get\u text()
是相同的
person = lia.find('b').contents
name = person[0].strip()
position = person[1].text