首页 > 解决方案 > 从数据框中的源中拆分条目 - 并将它们全部放在一个条目中

问题描述

今天是一个相当棘手的问题。至少对我来说。我想拆分“结果”中的条目,以便它们各自排在一行,但在同一个 DF 条目中。任何人都可以帮忙吗?谢谢!

这是我的html

html ='''<div data-itf-inject="BeneficialNames"><div><ul class="bullet_list" data-six-show-max="2"><li>Mr. Fox</li><li>Mr. Gander</li><li style="display: none;">Mr. Daepp</li><li style="display: none;">Power&amp;Brothers Memory Fund III GP Ltd</li></ul><a data-six-showmore="true" href="#" style="display: inline-block;"><i class="fa fa-chevron-circle-down" title="Mehr anzeigen"></i> Mehr anzeigen</a></div></div>'''

我把它放到BS中:

h = BeautifulSoup(html, 'html.parser')

然后我把文字拿出来。

BN = h.find('div', {'data-itf-inject': "BeneficialNames"}).text

这会返回一个相当混乱的结果。

现在,我想把它放在一个 DF-Entry 中,就像一个多索引,但放在一个 DF 中。

DF 的其余部分已经存在,此外它看起来像这样:

ISSUER    SHARE    BN
'Company' '95'     'Mr. FoxMr. GanderMr. DaeppPower&Brothers Memory Fund III GP Ltd'

但我希望它看起来像这样:

ISSUER    SHARE    BN
'Company' '95'     'Mr. Fox'
                   'Mr. Gander'
                   'Mr. Daepp'
                   'Power&Brothers Memory Fund III GP Ltd'

我该怎么办?谢谢!

标签: pythonpandasbeautifulsoupsplit

解决方案


这个解决方案怎么样?

from simplified_scrapy.simplified_doc import SimplifiedDoc
html ='''
<div data-itf-inject="BeneficialNames">
  <div>
    <ul class="bullet_list" data-six-show-max="2">
      <li>Mr. Fox</li>
      <li>Mr. Gander</li>
      <li style="display: none;">Mr. Daepp</li>
      <li style="display: none;">Power&amp;Brothers Memory Fund III GP Ltd</li>
    </ul><a data-six-showmore="true" href="#" style="display: inline-block;"><i class="fa fa-chevron-circle-down"
        title="Mehr anzeigen"></i> Mehr anzeigen</a>
  </div>
</div>
'''

doc = SimplifiedDoc(html)
div = doc.select('div@data-itf-inject=BeneficialNames')
lis = div.ul.lis
print ([li.text for li in lis])

结果:

['Mr. Fox', 'Mr. Gander', 'Mr. Daepp', 'Power&amp;Brothers Memory Fund III GP Ltd']

推荐阅读