Разобрать сложный тег <li>с помощью BeautifulSoup - PullRequest
0 голосов
/ 17 января 2020

У меня есть веб-страница со следующим кодом:

<li> 
<a href="/wiki/Thalassery" title="Thalassery">Thalassery</a> (<a class="mw-redirect" href="/wiki/Malayalam_language" title="Malayalam language">Malayalam</a>: <span lang="ml">തലശ്ശേരി</span>), from 
<i>Tellicherry</i></li>
         <li><a href="/wiki/Thanjavur" title="Thanjavur">Thanjavur</a> (<a href="/wiki/Tamil_language" title="Tamil language">Tamil</a>: <span lang="ta">தஞ்சாவூர்</span>), from British name <i>Tanjore</i></li>
         <li><a href="/wiki/Thane" title="Thane">Thane</a> (<a href="/wiki/Marathi_language" title="Marathi language">Marathi</a>: <span lang="mr">ठाणे</span>), from British name <i>Tannah</i></li>
<li><a href="/wiki/Thoothukudi" title="Thoothukudi">Thoothukudi</a> (<a href="/wiki/Tamil_language" title="Tamil language">Tamil</a>: <span lang="ta">தூத்துக்குடி</span>), from <i>Tuticorin</i> and its short form <i>Tuty</i></li>

Мне нужно проанализировать вывод так, чтобы в результате были извлечены такие слова, как: Thalassery, Tellicherry, Thanjavur, Tanjore, Thane, Tannah, Thoothukudi, Тутикорин

Может кто-нибудь помочь с этим

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Попробуйте решение simpified_scrapy, его отказоустойчивость

from simplified_scrapy.simplified_doc import SimplifiedDoc
html='''
<li> 
<a href="/wiki/Thalassery" title="Thalassery">Thalassery</a> (<a class="mw-redirect" href="/wiki/Malayalam_language" title="Malayalam language">Malayalam</a>: <span lang="ml">തലശ്ശേരി</span>), from 
<i>Tellicherry</i></li>
         <li><a href="/wiki/Thanjavur" title="Thanjavur">Thanjavur</a> (<a href="/wiki/Tamil_language" title="Tamil language">Tamil</a>: <span lang="ta">தஞ்சாவூர்</span>), from British name <i>Tanjore</i></li>
         <li><a href="/wiki/Thane" title="Thane">Thane</a> (<a href="/wiki/Marathi_language" title="Marathi language">Marathi</a>: <span lang="mr">ठाणे</span>), from British name <i>Tannah</i></li>
<li><a href="/wiki/Thoothukudi" title="Thoothukudi">Thoothukudi</a> (<a href="/wiki/Tamil_language" title="Tamil language">Tamil</a>: <span lang="ta">தூத்துக்குடி</span>), from <i>Tuticorin</i> and its short form <i>Tuty</i></li>
'''
doc = SimplifiedDoc(html)
lis = doc.lis
print ([(li.a.text,li.i.text if li.i else '') for li in lis])

Результат:

[('Thalassery', 'Tellicherry'), ('Thanjavur', 'Tanjore'), ('Thane', 'Tannah'), ('Thoothukudi', 'Tuticorin')]
0 голосов
/ 17 января 2020

Вы можете использовать .findAll() для получения всех элементов li и использовать теги find() 'a' и 'i'

for item in soup.findAll('li'):
    print(item.find('a').text,item.find('i').text)

>>>
Thalassery Tellicherry
Thanjavur Tanjore
Thane Tannah
Thoothukudi Tuticorin
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...