使用beautifulSoup解析复杂的<li>标记

2024-09-26 17:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有以下代码的网页:

<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>

我需要解析输出,这样结果将提取单词,如:地中海贫血、Tellichery、Thanjavur、Tanjore、Thane、Tannah、Thoothukudi、Tuticorin

有人能帮忙吗


Tags: fromlangtitlewikililanguagehrefspan
2条回答

试试简化的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')]

您可以使用.findAll()获取所有li元素,并使用find(){}和'i'标记

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

>>>
Thalassery Tellicherry
Thanjavur Tanjore
Thane Tannah
Thoothukudi Tuticorin

相关问题 更多 >

    热门问题