Очистите элементы списка, в которых нет классов

#python #web-scraping #beautifulsoup

Вопрос:

Я пытаюсь наскрести неупорядоченный список. Но у них нет никакого класса, определенного для каждого элемента списка. Как я могу очистить один элемент списка в таком состоянии? Есть ли какой-нибудь возможный способ сделать это? получение массива элементов и вызов каждого элемента не работает, так как все страницы сайта не следуют одному и тому же порядку элементов списка.

то, что я пытаюсь наскрести:

 <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. Но как я могу извлечь контактное лицо и дату регистрации? На некоторых страницах дата регистрации указана перед контактным лицом. Есть ли какой-либо возможный способ достичь этого?

Комментарии:

1. Можете ли вы добавить еще несколько примеров, которые вы не можете очистить.

2. @sushanth Я хочу очистить тп, контактное лицо и дату (зарегистрирован) в списке, который я прикрепил.

Ответ №1:

Я взял данные в качестве 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 тег и использовать метод
find_all для тега li, используя его, повторите это и найдите тег all span, в котором в
первом индексе у вас есть все данные

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