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