Как извлечь элементы списка с помощью href от BeautifulSoup? - PullRequest
0 голосов
/ 04 апреля 2020

HTML выглядит следующим образом:

<h2 class="block-title">Content</h2>
<div class="catalog-list column-1">
<ol>
<li class="level1">
<span class="index">1</span>
<span class="text"><a href="#1">Basic Info</a></span>
</li>
<li class="level1">
<span class="index">2</span>
<span class="text"><a href="#2">Life</a></span>
</li>
<li class="level1">
<span class="index">3</span>
<span class="text"><a href="#3">Achievements</a></span>
</li>
</ol>

</div>
</div>
</div>
<div class="anchor-list ">
<a name="1" class="lemma-anchor para-title" ></a>
<a name="sub20964854_1" class="lemma-anchor " ></a>
<a name="Basic Info" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">John Smith</span>Basic Info</h2>
<a class="edit-icon j-edit-link" data-edit-dl="1" href="javascript:;"><em class="cmn-icon wiki-lemma-icons wiki-lemma-icons_edit-lemma"></em>edit</a>
</div>
<div class="para" label-module="para">Name:John Smith</div>
<div class="para" label-module="para">Nationality:USA</div>
<div class="para" label-module="para">Sex:Male</div>
<div class="para" label-module="para">Height:184cm</div>
<div class="para" label-module="para">Birthday:1994-06-01</div>
<div class="para" label-module="para">Place:CA, USA<sup class="sup--normal" data-sup="1" data-ctrmap=":1,">

Я хочу извлечь раздел "Basi c Info", чья ссылка отсутствует. это «# 1», и ниже, есть список атрибутов, которые я хочу извлечь.

Я использую BeautifulSoup. Я натолкнулся на способы обработки других тегов, но не знаю, как обращаться с этими тегами, например, «label-module».

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Попробуйте это.

from simplified_scrapy import SimplifiedDoc
html = ''''''
doc = SimplifiedDoc(html)
baseInfoH2 = doc.getElementByText('Basic Info','h2')
baseInfo = doc.getElements('div',attr='label-module',value='para',start=baseInfoH2._end).text # Use h2 to locate
print (baseInfo)

Результат:

['Name:John Smith', 'Nationality:USA', 'Sex:Male', 'Height:184cm', 'Birthday:1994-06-01']
0 голосов
/ 04 апреля 2020

«label-module» - это не тег, это атрибут тега div.

из вашего примера вы можете извлечь атрибут примерно так:

soup = BeautifulSoup (' Национальность: США ') tag = soup.div tag [' label-module ']

должен возвращать что-то вроде:

u'para'

это все хорошо документировано здесь: https://www.crummy.com/software/BeautifulSoup/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...