Извлечение всего текста между двумя тегами (жирным шрифтом) <b>с использованием XPATH - PullRequest
2 голосов
/ 06 марта 2020

Это мой HTML элемент,

<div class="abstract-content selected" id="en-abstract">
    <p>
        <b>Introduction.</b> 
         Against the backdrop of increasing resistance to conventional antibiotics, bacteriocins represent an attractive alternative, given their potent activity, novel modes of action and perceived lack of issues with resistance.
        <b>Aim.</b>
         In this study, the nature of the antibacterial activity of a clinical isolate of 
        <i>Streptococcus gallolyticus</i>
         was investigated.
        <b>Methods.</b>
         Optimization of the production of an inhibitor from strain AB39 was performed using different broth media and supplements. Purification was carried out using size exclusion, ion exchange and HPLC. Gel diffusion agar overlay, MS/MS, 
        <i>de novo</i>
         peptide sequencing and genome mining were used in a proteogenomics approach to facilitate identification of the genetic basis for production of the inhibitor.
        <b>Results.</b>
         Strain AB39 was identified as representing 
        <i>Streptococcus gallolyticus</i>
         subsp. 
        <i>pasteurianus</i>
         and the successful production and purification of the AB39 peptide, named nisin P, with a mass of 3133.78 Da, was achieved using BHI broth with 10 % serum. Nisin P showed antibacterial activity towards clinical isolates of drug-resistant bacteria, including methicillin-resistant 
        <i>Staphylococcus aureus</i>
         , vancomycin-resistant 
        <i>Enterococcus</i>
         and penicillin-resistant 
        <i>Streptococcus pneumoniae</i>
         . In addition, the peptide exhibited significant stability towards high temperature, wide pH and certain proteolytic enzymes and displayed very low toxicity towards sheep red blood cells and Vero cells.
        <b>Conclusion.</b>
         To the best of our knowledge, this study represents the first production, purification and characterization of nisin P. Further study of nisin P may reveal its potential for treating or preventing infections caused by antibiotic-resistant Gram-positive bacteria, or those evading vaccination regimens.
    </p>
</div>

Здесь я хотел извлечь "заголовки" из тега "<b>" и соответствующие им значения из текста, расположенного под ними.

пример: «AIM»: в этом исследовании была исследована природа антибактериальной активности клинического изолята Streptococcus gallolyticus.

Есть ли способ достичь этого с помощью xpath. И обратите внимание: я использую scrapy для извлечения вещей.

Я использовал

" response.xpath (" // p // text () [normalize-space ()] [ previous-sibling :: * / self :: b] ") ", который дает все значения заголовков в виде отдельных кусков,

[u 'На фоне повышения устойчивости к обычным антибиотикам бактериоцины представляют собой привлекательный альтернативы, учитывая их мощную активность, новые способы действия и предполагаемое отсутствие проблем с резистентностью. ', u' В этом исследовании характер антибактериальной активности клинического изолята ', u' . ', u' Оптимизацию продукции ингибитора из штамма AB39 проводили с использованием различных бульонных сред и добавок. Очистку осуществляли с использованием исключения по размеру, ионного обмена и HPL C. Наложение геля для диффузии в агар, MS / MS, секвенирование пептидов ', u' и извлечение генома использовались в протеогеномном подходе для облегчения идентификации основы genti c для продукции ингибитора. ', U' Штамм AB39 был идентифицирован как представляющий ', у' подпр. и успешное получение и очистка пептида АВ39, названного низином Р, с массой 3133,78 Да, была достигнута с использованием бульона BHI с 10% сыворотки. Низин P продемонстрировал антибактериальную активность в отношении клинических изолятов лекарственно-устойчивых бактерий, в том числе устойчивых к метициллину, u, ванкомицину, u и пенициллину, u. Кроме того, пептид проявлял значительную стабильность в отношении высокой температуры, широкого рН и некоторых протеолитических c ферментов и проявлял очень низкую токсичность по отношению к эритроцитам овцы и клеткам Vero. 'U' Насколько нам известно, это исследование представляет собой первое производство, очистка и характеристика низина P. Дальнейшее изучение низина Р может выявить его потенциал для лечения или профилактики инфекций, вызванных антибиоти c резистентными грамположительными бактериями или уклоняющимися от схем вакцинации. \ n \ n \ n \ n ']

Любое руководство полезно !!!!

1 Ответ

1 голос
/ 06 марта 2020

Самый быстрый способ, вероятно, состоит в том, чтобы получить весь контент с помощью string(//p) и разделить его с помощью заданных c команд обработки текста.

С XPath вы можете попробовать:

Получить все заголовки (возвращает 5 элементов):

//b/text()

Получить соответствующее описание (включая теги itali c) с этими XPaths (возвращает элемент 5 * 1):

normalize-space(substring-before(substring-after(string(//p),//b[.="Introduction."]),//b[.="Aim."]))
normalize-space(substring-before(substring-after(string(//p),//b[.="Aim."]),//b[.="Methods."]))
normalize-space(substring-before(substring-after(string(//p),//b[.="Methods."]),//b[.="Results."]))
normalize-space(substring-before(substring-after(string(//p),//b[.="Results."]),//b[.="Conclusion."]))
normalize-space(substring-after(string(//p),//b[.="Conclusion."]))

Если Вы не знаете текст между тегами, вы можете использовать индексирование по позиции (// b [1], // b [2], ...). Используйте count (// b), чтобы узнать максимальное значение.

РЕДАКТИРОВАТЬ: Альтернативные XPaths:

normalize-space(//text()[preceding::b="Introduction." and following::b="Aim."])
normalize-space(//text()[preceding::b="Aim." and following::b="Methods."])
normalize-space(//text()[preceding::b="Methods." and following::b="Results."])
normalize-space(//text()[preceding::b="Results." and following::b="Conclusion."])
normalize-space(//text()[preceding::b="Conclusion."])
...