抓取没有类的列表项



我正在尝试抓取一个无序列表。但是它们没有为每个列表项定义任何类。在这种情况下,我怎样才能抓取到一个列表项呢?有什么办法可以做到这一点吗?获取一个项目数组并调用每个项目不起作用,因为站点的所有页面并不遵循列表项目的相同顺序。

我想刮的东西:

<ul class="c-list main-contacts">
<li><span>Phone</span>
<a href="tel:+370 65271666">
<span itemprop="telephone">+370 65271666</span></a></li>
                                                  
<li><span>Contact person</span><span>Arvydas Andriulionis</span></li>
<li><span>Registered on</span><span>2017-04-07</span></li></ul>                                                                                                                                                                                 

可以抓取tp号。但是我如何提取联系人和注册日期呢?在某些页面上,注册日期在联系人之前。有什么可能的方法可以做到这一点吗?

我把数据作为html

from bs4 import BeautifulSoup
html="""<ul class="c-list main-contacts">
<li><span>Phone</span>
<a href="tel:+370 65271666">
<span itemprop="telephone">+370 65271666</span></a></li>
                                                  
<li><span>Contact person</span><span>Arvydas Andriulionis</span></li>
<li><span>Registered on</span><span>2017-04-07</span></li></ul>"""
soup=BeautifulSoup(html,"html.parser")

这里首先可以找到主ul标签并在li上使用find_all方法标记,遍历它并找到其中的所有span标记第一个索引是all data

li_tag=soup.find("ul",class_="c-list main-contacts").find_all("li")
data_lst=[]
for i in li_tag:
data_lst.append(i.find_all("span")[1].get_text())

输出:

['+370 65271666', 'Arvydas Andriulionis', '2017-04-07']

最新更新