BeautifullSoup. Парс сайти.
Основи Python и Django. -> Бібліотека beautifulsoup.
Бібліотека
Встановлення.
pip install bs4
приклад html документа
html_document = '''
<html>
<head>
<title>Головна сторінка</title>
</head>
<body>
<h1> Заголовок H1 </h1>
<a href="http://google.com"> Посилання 1 </a>
<a href="http://yandex.ru"> Посилання 2 </a>
<div id="block_id">
Блоковий елемент
</div>
<p class="p_class"> Параграф 1 </p>
<p class="p_class"> Параграф 2 </p>
<p class="p_class"> Параграф 3 </p>
<table>
<tr>
<td valign="top"> Комірка 1 </td>
<td valign="top"> Комірка 1 </td>
<td valign="top"> Комірка 3 </td>
</tr>
<tr>
<td valign="top"> Комірка 1 </td>
<td valign="top"> Комірка 1 </td>
<td valign="top">Комірка 3 </td>
</tr>
</table>
</body>
</html>
'''
Читання DOM.
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
Заголовок документа.
soup.title.string
Заголовок документа.
el = soup.find('h1')
Заголовок документа.
soup.findAll('a')
Доступ до тексту та атрибутів тега.
link.get('href')
link.text
Прохід по масиву
for link in soup.findAll('a'):
print(link.get('href'))
Пошук одного елемента по id.
el = soup.find('h1',{'id': 'my-header'})
Пошук багатьох елементів на ім’я класу.
els = soup.findAll('div',{'class': 'class_name'})
за кількома класами
show = soup.find('div', class_='action-link showPhonesLink')
show = soup.find('div', attrs={'class': 'action-link showPhonesLink'})
Пошук за css атрибутами.
els = soup.findAll('div',attrs={'id': '123'})
Метод select
results = soup.select('td[valign="top"]')
- вповертає масив
Основи Python и Django. -> Домашнє завдання.
Домашнє завдання.
Зробити консольну програму, яка скопіює інформацію з сайту https://business.gov.kz/ru/directory-of-companies/ і збереже її в json файл з наступною структурою з розбивкою по сторінках: [ ‘1’: [ { ‘name’: ‘Вантажні шини в Казахстані|| EMI Company’, ‘url’: ‘https://www.napishem.kz/’ ‘phone’: ‘+3089765432’ }, { ‘name’: ‘IT-компания LIGASOFT’, ‘url’: ‘https://www.fgh.kz/’ ‘phone’: ‘+30895665432’ } … ] ‘2’: […] ]