如何在相同的html标签之间提取数据

时间:2018-07-28 01:56:27

标签: python html regex python-3.x beautifulsoup

我想分割html文件(它是Pali-捷克字典),然后在Python中将数据提取到数组或字典中:

  • 术语(粉红色)

    <p class="calibre_"><span class="bold"> TERM1 </span>

  • 定义 (黄色)

    ...TERM1 </span>(→<span class="italic"> TEXT</span>).</p> <p class="calibre_"><span class="bold">TERM2....

定义文本有时很棘手,并且可以包含多个段落和换行符。因此,我找到了从 term 的结束标记到 new term 的开始标记之间提取文本的最安全的选择。

数据预览:

HTML preview of the data

原始HTML数据:https://pastebin.com/FypTPnLc

我无法成功提取数据。我已经尝试了text.split方法和正则表达式,但是找不到该问题的解决方案。我想问一下从此html提取数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这将提取数据到列表,列表中的每个项目均为[term, definition]

data = """
  <p class="calibre_"><span class="bold">di­b­ba-čak­khu</span> (di­bba­cak­khu): ,bož­ský zrak‘ (dosl. ,bož­ské oko‘), je jed­nou ze šes­ti vyš­ších schop­nos­tí (→ <span class="italic">ab­hi­ň­ňá</span>) a jed­ním ze tří dru­hů vě­dě­ní (→ <span class="italic">té­vi­dždžá</span>).</p>

  <p class="calibre_"><span class="bold">di­b­ba-lóka</span> (di­bba­lo­ka): ne­beský svět; →<span class="italic"> déva</span>.<br class="calibre2"/>
<span class="bold">di­b­ba-sóta</span> (di­bba­so­ta): ,bož­ský sluch‘, je jed­nou z šes­ti vyš­ších schop­nos­tí (→ <span class="italic">ab­hi­ň­ňá</span>). </p>

  <p class="calibre_"><span class="bold">di­b­ba-vi­há­ra</span> (di­bba­vi­hā­ra): →<span class="italic"> vi­há­ra</span>.<br class="calibre2"/>
<span class="bold">dis­ci­plí­na</span> (eti­ka): →<span class="italic"> síla</span>.</p>

  <p class="calibre_"><span class="bold">dit­tha-dha­m­ma-véda­ní­ja-ka­m­ma</span> (diṭṭhad­ha­m­ma­ve­da­nīyaka­m­ma): kar­ma, kte­rá při­ná­ší plo­dy ješ­tě v tom­to ži­vo­tě; →<span class="italic"> kar­ma</span>. </p>

  <p class="calibre_"><span class="bold">dit­thi</span> (diṭṭhi): ,ná­zor‘ či ,pře­svěd­če­ní‘ (dosl. ,vi­dě­ní‘, od ko­ře­ne <span class="italic">dis</span> − ,vi­dět‘). Když není ve spo­je­ní s vý­ra­zem <span class="italic">sa­m­má </span>(správ­ný), od­ka­zu­je vět­ši­nou k ne­správ­né­mu či ne­pro­spěš­né­mu ná­zo­ru a jen v ně­ko­li­ka málo pří­pa­dech ke správ­né­mu ná­zo­ru, po­cho­pe­ní či vhle­du (na­pří­klad →<span class="italic"> dit­thip­pat­ta</span>; <span class="italic">dit­thi-vi­sudd­hi</span> − očiš­tě­ní ná­zo­ru; <span class="italic">dit­thi-sam­pan­na</span> − ob­da­ře­ný vhle­dem).</p>

  <p class="calibre_"> Ne­pro­spěš­né či ne­správ­né ná­zo­ry (<span class="italic">dit­thi</span> či<span class="italic"> miččhá-dit­thi</span>) jsou pro­hlá­še­ny za zce­la za­vr­že­ní­hod­né, ne­boť jsou zdro­jem špat­ných cílů a jed­ná­ní a mo<br class="calibre2"/> dit­thi dit­thi<br class="calibre2"/> hou člo­vě­ka ča­sem za­vést do nej­hlub­ších pro­pas­tí mrav­ní zká­zy, jak se uvá­dí v A. I, 22: </p>

  <p class="calibre_">„Mni­ši, jsou to pře­de­vším ne­správ­né ná­zo­ry, kvů­li kte­rým vzni­ka­jí v ta­ko­vém roz­sa­hu do­sud ne­vznik­lé ne­pro­spěš­né věci a již vznik­lé ne­pro­spěš­né věci sílí a na­pl­ňu­jí se. Jsou to pře­de­vším ne­správ­né ná­zo­ry, kvů­li kte­rým je v ta­ko­vém roz­sa­hu za­bra­ňo­vá­no vzni­ku do­sud ne­vznik­lých pro­spěš­ných věcí a již vznik­lé pro­spěš­né věci mizí. Jsou to pře­de­vším ne­správ­né ná­zo­ry, kvů­li kte­rým lid­ské by­tos­ti po roz­pa­du těla, po smr­ti, na­stu­pu­jí v ta­ko­vém roz­sa­hu ces­tu utr­pe­ní, ces­tu do svě­ta bídy a do pek­la.“ Dále se uvá­dí v A. I, 23: „Co­ko­li člo­věk s ne­správ­ným ná­zo­rem dělá či pod­stu­pu­je nebo ať má ja­ké­ko­li zá­mě­ry, cíle, tou­hy či sklo­ny, všech­ny tyto věci ho ve­dou k ne­žá­dou­cím, ne­pří­jem­ným a ne­pří­z­ni­vým sta­vům, k bídě a utr­pe­ní.“</p>

  <p class="calibre_">Z ab­hid­ha­mmy (Dhs.) lze vy­vo­dit, že ne­správ­né ná­zo­ry, ať vzni­ka­jí kde­ko­li, jsou vždy spo­je­ny s chti­vos­tí (→ Tab. I, 22−23, 26−27).<br class="calibre2"/> V sut­tách je uve­de­no mno­ho spe­ku­la­tiv­ních ná­zo­rů a te­o­rií, kte­ré vždy ovliv­ňo­va­ly a stá­le ovliv­ňu­jí lid­stvo. Mezi nimi je to ale pře­de­vším ne­správ­né pře­svěd­če­ní o osob­nos­ti, ná­zor o ,já‘, kte­rý lidi vždy a všu­de za­vá­děl a ple­tl nej­ví­ce. Toto pře­svěd­če­ní o osob­nos­ti (<span class="italic">sak­ká­ja-dit­thi</span>) či ná­zor o ,já‘ (<span class="italic">atta-dit­thi</span>) je dvo­jí­ho dru­hu − pře­svěd­če­ní o věč­ném tr­vá­ní a pře­svěd­če­ní o zá­ni­ku.<br class="calibre2"/> Ná­zor o věč­ném tr­vá­ní čili eter­na­lis­mus (<span class="italic">sassa­ta-dit­thi</span>) je pře­svěd­če­ním o exis­ten­ci ,já‘, duše či osob­nos­ti ja­kož­to pře­tr­vá­va­jí­cí en­ti­ty, kte­rá exis­tu­je ne­zá­vis­le na tě­les­ných a men­tál­ních pro­ce­sech utvá­ře­jí­cích ži­vot a kte­rá po­kra­ču­je i po smr­ti. <br class="calibre2"/> Ná­zor o zni­če­ní (<span class="italic">uččhéda-dit­thi</span>) je na dru­hé stra­ně pře­svěd­če­ní o exis­ten­ci ,já‘ či osob­nos­ti ja­kož­to en­ti­ty, kte­rá je ví­ce­mé­ně to­tož­ná s oně­mi tě­les­ný­mi a men­tál­ní­mi pro­ce­sy a kte­rá pro­to za­nik­ne roz­pa­dem při smr­ti. Dva­cet dru­hů ná­zo­rů o osob­nos­ti →<span class="italic"> sak­ká­ja-dit­thi</span>.<br class="calibre2"/> Buddha ne­u­čil ani o osob­nos­ti, kte­rá pře­tr­vá­vá po smr­ti, ani o osob­nos­ti, kte­rá za­nik­ne smr­tí, ale uka­zo­val, že osob­nost, ego, jed­not­li­vec, člo­věk atd. nejsou nic ji­né­ho než pou­hé kon­venč­ní vý­ra­zy (<span class="italic">vó­há­ra-va­ča­na</span>) a že v ab­so­lut­ním smys­lu (→<span class="italic"> pa­ra­mattha-sač­ča</span>) exis­tu­je pou­ze se­bestra­vu­jí­cí pro­ces tě­les­ných a men­tál­ních jevů, kte­ré stá­le zno­vu vzni­ka­jí a hned zase mizí. Dal­ší po­drob­nos­ti →<span class="italic"> anat­tá</span>, <span class="italic">khand­ha</span>, <span class="italic">pa­tič­ča-sa­mup­pá­da</span>. <br class="calibre2"/> „Do­ko­na­lý je osvo­bo­zen od všech ná­zo­rů (<span class="italic">dit­thi-gata</span>), pro­to­že pro­hlé­dl, co je tě­les­nost a jak vzni­ká a za­ni­ká. Pro­hlé­dl, co jsou po­ci­ťo­vá­ní … vní­má­ní … men­tál­ní for­ma­ce … vě­do­mí … a jak vzni­ka­jí a za­ni­ka­jí. Pro­to ří­kám, že Do­ko­na­lý do­sá­hl úpl­né­ho osvo­bo­ze­ní díky ustá­ní, za­ne­chá­ní, vy­mi­ze­ní, od­mít­nu­tí a za­pu­ze­ní všech před­stav a do­mně­nek, všech sklo­nů k mar­né slá­vě ,já‘ a ,mého‘“ (M. 72).</p>

  <p class="calibre_"> dit­thi­nis­si­ta­sí­la dit­thi­nis­si­ta­sí­la<br class="calibre2"/> Od­mít­nu­tí spe­ku­la­tiv­ních ná­zo­rů a te­o­rií je ústřed­ním té­ma­tem ka­pi­to­ly <span class="italic">Atthaka-vag­ga</span> ze <span class="italic">Sut­ta-ni­pá­ty</span>. </p>

  <p class="calibre_">Tzv. ,ne­správ­né ná­zo­ry s ne­zvrat­ný­mi ná­sled­ky‘ ( <span class="italic">ni­ja­ta-miččhá-dit­thi</span>), tvo­ří­cí po­sled­ní z de­se­ti ne­pro­spěš­ných způ­sobů jed­ná­ní (→<span class="italic"> ka­m­ma-patha</span>), jsou tyto tři:</p>

  <p class="calibre_">1. Fa­ta­lis­tic­ké ,pře­svěd­če­ní o bez­pří­čin­nos­ti‘ exis­ten­ce ( <span class="italic">ahétu­ka-dit­thi</span>) hlá­sa­né Budd­ho­vým sou­čas­ní­kem, Mak­kha­lim Gó­sá­lou, kte­rý od­mí­tal veš­ke­ré pří­či­ny zka­že­nos­ti a čis­to­ty by­tos­tí a tvr­dil, že vše je zce­la před­ur­če­no osu­dem.</p>

  <p class="calibre_">2. ,Pře­svěd­če­ní o ne­ú­čin­nos­ti jed­ná­ní‘ ( <span class="italic">aki­ri­ja-dit­thi</span>) hlá­sa­né dal­ším Budd­ho­vým sou­čas­ní­kem, Púra­nou Kassa­pou, kte­rý po­pí­ral veš­ke­ré kar­mic­ké účin­ky dob­ré­ho a špat­né­ho jed­ná­ní: „Tomu, kdo za­bí­jí, kra­de, lou­pí atd., se nic zlé­ho ne­sta­ne. Za štěd­rost, se­be­o­vlá­dá­ní a prav­di­vost nelze oče­ká­vat žád­nou od­mě­nu.“ </p>

  <p class="calibre_">3. Ni­hi­lis­mus ( <span class="italic">natthi­ka-dit­thi</span>) hlá­sa­ný tře­tím Budd­ho­vým sou­čas­ní­kem, Adži­tou Késakam­ba­lim, kte­rý tvr­dil, že kaž­dé pře­svěd­če­ní o dob­rém jed­ná­ní a jeho od­mě­ně je jen kla­mem, že po smr­ti není žád­ný dal­ší ži­vot a že se člo­věk po smr­ti roz­pad­ne na prv­ky atd.</p>

  <p class="calibre_"> Dal­ší po­drob­nos­ti o těch­to třech ná­zo­rech viz D. 2; M. 60; ko­men­tá­řo­vý vý­klad ve Whe­el 98/99, str. 23. </p>

  <p class="calibre_">Čas­to se také uvá­dí de­set an­ti­no­mií (= pro­ti­chůd­ných ná­zo­rů; <span class="italic">an­ta­gáhi­ká miččhá-dit­thi</span>), na­pří­klad: „svět je ko­neč­ný“ a „svět je ne­ko­neč­ný“ … „tělo a duše jsou to­tož­né“ a „tělo a duše jsou od­liš­né“ (na­pří­klad M. 63).</p>

  <p class="calibre_">V <span class="italic"> Brahmadžá­la-sut­tě</span> (D.1) je roz­tří­dě­no a po­psá­no še­de­sát dva ne­správ­ných ná­zo­rů, kte­ré shr­nu­jí všech­ny mož­né ne­správ­né ná­zo­ry a spe­ku­la­ce o člo­vě­ku a svě­tě. Viz Bhik­khu Bod­hi: <span class="italic">The All-Em­bra­cing Net of Views</span> (<span class="italic">Brahmadžá­la-sut­ta</span> a ko­men­tář), BPS. Dále viz D. 15, 23, 24, 28; M. 11−12, 25, 60, 63, 72, 76, 101−102, 110; A. II, 16; A. X, 93; S. XXI, XXIV; Pts.M. (<span class="italic">Dit­thi-kathá</span>) atd.</p>
"""

from bs4 import BeautifulSoup
from pprint import pprint

data = data.replace('\xad', '')   # remove soft-hyphens
soup = BeautifulSoup(data, 'lxml')

result = []
for span in soup.select('p > span.bold'):
    result.append([span.text, span.parent.text.replace(span.text, '').strip()])

    for p in span.parent.select('~ p'):
        if p.select('span.bold'):
            break
        result[-1][-1] += '\n' + p.text

pprint(result)

输出:

[['dibba-čakkhu',
  '(dibbacakkhu): ,božský zrak‘ (dosl. ,božské oko‘), je jednou ze šesti '
  'vyšších schopností (→ abhiňňá) a jedním ze tří druhů vědění (→ tévidždžá).'],
 ['dibba-lóka',
  '(dibbaloka): nebeský svět; → déva.\n'
  'dibba-sóta (dibbasota): ,božský sluch‘, je jednou z šesti vyšších '
  'schopností (→ abhiňňá).'],
 ['dibba-sóta',
  'dibba-lóka (dibbaloka): nebeský svět; → déva.\n'
  ' (dibbasota): ,božský sluch‘, je jednou z šesti vyšších schopností (→ '
  'abhiňňá).'],
 ['dibba-vihára', '(dibbavihāra): → vihára.\ndisciplína (etika): → síla.'],
 ['disciplína', 'dibba-vihára (dibbavihāra): → vihára.\n (etika): → síla.'],
 ['dittha-dhamma-védaníja-kamma',
  '(diṭṭhadhammavedanīyakamma): karma, která přináší plody ještě v tomto '
  'životě; → karma.'],
 ['ditthi',
  '(diṭṭhi): ,názor‘ či ,přesvědčení‘ (dosl. ,vidění‘, od kořene dis − '
  ',vidět‘). Když není ve spojení s výrazem sammá (správný), odkazuje většinou '
  'k nesprávnému či neprospěšnému názoru a jen v několika málo případech ke '
  'správnému názoru, pochopení či vhledu (například → ppatta; -visuddhi − '
  'očištění názoru; -sampanna − obdařený vhledem).\n'
  ' Neprospěšné či nesprávné názory (ditthi či miččhá-ditthi) jsou prohlášeny '
  'za zcela zavrženíhodné, neboť jsou zdrojem špatných cílů a jednání a mo '
  'ditthi ditthi hou člověka časem zavést do nejhlubších propastí mravní '
  'zkázy, jak se uvádí v A. I, 22: \n'
  '„Mniši, jsou to především nesprávné názory, kvůli kterým vznikají v takovém '
  'rozsahu dosud nevzniklé neprospěšné věci a již vzniklé neprospěšné věci '
  'sílí a naplňují se. Jsou to především nesprávné názory, kvůli kterým je v '
  'takovém rozsahu zabraňováno vzniku dosud nevzniklých prospěšných věcí a již '
  'vzniklé prospěšné věci mizí. Jsou to především nesprávné názory, kvůli '
  'kterým lidské bytosti po rozpadu těla, po smrti, nastupují v takovém '
  'rozsahu cestu utrpení, cestu do světa bídy a do pekla.“ Dále se uvádí v A. '
  'I, 23: „Cokoli člověk s nesprávným názorem dělá či podstupuje nebo ať má '
  'jakékoli záměry, cíle, touhy či sklony, všechny tyto věci ho vedou k '
  'nežádoucím, nepříjemným a nepříznivým stavům, k bídě a utrpení.“\n'
  'Z abhidhammy (Dhs.) lze vyvodit, že nesprávné názory, ať vznikají kdekoli, '
  'jsou vždy spojeny s chtivostí (→ Tab. I, 22−23, 26−27). V suttách je '
  'uvedeno mnoho spekulativních názorů a teorií, které vždy ovlivňovaly a '
  'stále ovlivňují lidstvo. Mezi nimi je to ale především nesprávné '
  'přesvědčení o osobnosti, názor o ,já‘, který lidi vždy a všude zaváděl a '
  'pletl nejvíce. Toto přesvědčení o osobnosti (sakkája-ditthi) či názor o '
  ',já‘ (atta-ditthi) je dvojího druhu − přesvědčení o věčném trvání a '
  'přesvědčení o zániku. Názor o věčném trvání čili eternalismus '
  '(sassata-ditthi) je přesvědčením o existenci ,já‘, duše či osobnosti '
  'jakožto přetrvávající entity, která existuje nezávisle na tělesných a '
  'mentálních procesech utvářejících život a která pokračuje i po smrti.  '
  'Názor o zničení (uččhéda-ditthi) je na druhé straně přesvědčení o existenci '
  ',já‘ či osobnosti jakožto entity, která je víceméně totožná s oněmi '
  'tělesnými a mentálními procesy a která proto zanikne rozpadem při smrti. '
  'Dvacet druhů názorů o osobnosti → sakkája-ditthi. Buddha neučil ani o '
  'osobnosti, která přetrvává po smrti, ani o osobnosti, která zanikne smrtí, '
  'ale ukazoval, že osobnost, ego, jednotlivec, člověk atd. nejsou nic jiného '
  'než pouhé konvenční výrazy (vóhára-vačana) a že v absolutním smyslu (→ '
  'paramattha-sačča) existuje pouze sebestravující proces tělesných a '
  'mentálních jevů, které stále znovu vznikají a hned zase mizí. Další '
  'podrobnosti → anattá, khandha, patičča-samuppáda.  „Dokonalý je osvobozen '
  'od všech názorů (ditthi-gata), protože prohlédl, co je tělesnost a jak '
  'vzniká a zaniká. Prohlédl, co jsou pociťování … vnímání … mentální formace '
  '… vědomí … a jak vznikají a zanikají. Proto říkám, že Dokonalý dosáhl '
  'úplného osvobození díky ustání, zanechání, vymizení, odmítnutí a zapuzení '
  'všech představ a domněnek, všech sklonů k marné slávě ,já‘ a ,mého‘“ (M. '
  '72).\n'
  ' ditthinissitasíla ditthinissitasíla Odmítnutí spekulativních názorů a '
  'teorií je ústředním tématem kapitoly Atthaka-vagga ze Sutta-nipáty. \n'
  'Tzv. ,nesprávné názory s nezvratnými následky‘ ( nijata-miččhá-ditthi), '
  'tvořící poslední z deseti neprospěšných způsobů jednání (→ kamma-patha), '
  'jsou tyto tři:\n'
  '1. Fatalistické ,přesvědčení o bezpříčinnosti‘ existence ( ahétuka-ditthi) '
  'hlásané Buddhovým současníkem, Makkhalim Gósálou, který odmítal veškeré '
  'příčiny zkaženosti a čistoty bytostí a tvrdil, že vše je zcela předurčeno '
  'osudem.\n'
  '2. ,Přesvědčení o neúčinnosti jednání‘ ( akirija-ditthi) hlásané dalším '
  'Buddhovým současníkem, Púranou Kassapou, který popíral veškeré karmické '
  'účinky dobrého a špatného jednání: „Tomu, kdo zabíjí, krade, loupí atd., se '
  'nic zlého nestane. Za štědrost, sebeovládání a pravdivost nelze očekávat '
  'žádnou odměnu.“ \n'
  '3. Nihilismus ( natthika-ditthi) hlásaný třetím Buddhovým současníkem, '
  'Adžitou Késakambalim, který tvrdil, že každé přesvědčení o dobrém jednání a '
  'jeho odměně je jen klamem, že po smrti není žádný další život a že se '
  'člověk po smrti rozpadne na prvky atd.\n'
  ' Další podrobnosti o těchto třech názorech viz D. 2; M. 60; komentářový '
  'výklad ve Wheel 98/99, str. 23. \n'
  'Často se také uvádí deset antinomií (= protichůdných názorů; antagáhiká '
  'miččhá-ditthi), například: „svět je konečný“ a „svět je nekonečný“ … „tělo '
  'a duše jsou totožné“ a „tělo a duše jsou odlišné“ (například M. 63).\n'
  'V  Brahmadžála-suttě (D.1) je roztříděno a popsáno šedesát dva nesprávných '
  'názorů, které shrnují všechny možné nesprávné názory a spekulace o člověku '
  'a světě. Viz Bhikkhu Bodhi: The All-Embracing Net of Views '
  '(Brahmadžála-sutta a komentář), BPS. Dále viz D. 15, 23, 24, 28; M. 11−12, '
  '25, 60, 63, 72, 76, 101−102, 110; A. II, 16; A. X, 93; S. XXI, XXIV; Pts.M. '
  '(Ditthi-kathá) atd.']]