从BS4中提取并存储为Python中的列表元素

从BS4中提取并存储为Python中的列表元素,python,beautifulsoup,Python,Beautifulsoup,我使用BeautifulSoup4从网页中提取了包装在多个HTMLP标记中的数据。我已将所有提取的数据存储在一个列表中。但我希望每个提取的数据都作为单独的列表元素,用逗号分隔 HTML内容结构: <ul> <li> <p> <span class="TextRun"> <span class="NormalTextrun"> Data 1 </span>

我使用BeautifulSoup4从网页中提取了包装在多个HTMLP标记中的数据。我已将所有提取的数据存储在一个列表中。但我希望每个提取的数据都作为单独的列表元素,用逗号分隔

HTML内容结构:

<ul>
   <li>
      <p>
        <span class="TextRun">
          <span class="NormalTextrun"> Data 1 </span>
        </span>
      </p>
   </li>
   <li>
      <p>
        <span class="TextRun">
          <span class="NormalTextrun"> Data 2 </span>
        </span>
      </p>
   </li>
   <li>
      <p>
        <span class="TextRun">
          <span class="NormalTextrun"> Data 3 </span>
        </span>
      </p>
   </li>
</ul>
电流输出: [数据1数据2数据3]

预期产出: [数据1、数据2、数据3]


非常感谢您的帮助

这应该能解决你的问题

data = [x.text for x in elem.find_all('span', attrs={'class':'TextRun'})]

这将提供正确的输出:

data = [ele.text for ele in soup.find_all('span', {'class':'NormalTextrun'})]
print(data)
输出:

[' Data 1 ', ' Data 2 ', ' Data 3 ']

打印数据会给你:
['data 1'、'data 2'、'data 3']

我认为@Sagun Shrestha的建议是有效的。更详细地处理它,如内部
span
和额外的空格。也许你应该试试:

data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print(data)
如果您特别希望字符串输出不带引号。您可以尝试以下方法:

data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print('[', ', '.join(data), ']', sep='')
希望这是你想要的

data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print(data)
data = [s.text.strip() for s in b.find_all('span', class_='NormalTextrun')]
print('[', ', '.join(data), ']', sep='')