Основы парсинга информации: BeautifulSoup, Selenium

  • Автор записи:
  • Рубрика записи:Notebooks

Структура скрипта

  • Рассмотрение осовных команд к библиотеке Selenium
  • Рассмотрение осовных команд к библиотеке BeautifulSoup
  • Осуществление процесса сбора текстовой информации с форума Bits.media при помощи BeautifulSoup
  • Осуществление процесса сбора текстовой информации с форума Bits.media при помощи Selenium
  • Имплементация постраничного парсинга публичной информации с онлайн-портала
Требуемые библиотеки

from selenium import webdriver
import time
from webdriver_manager.chrome import ChromeDriverManager
from clickhouse_driver import Client
import pandas as pd
import requests as rs
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup as bs
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
1. Пример кода для построения простой рекурретной нейронной сети

Можно также использовать универсальную команду find_element(By.) или find_elements(By.), где в скобках после By. можно указать разные команды:

ID = “id”

XPATH = “xpath”

NAME = “name”

TAG_NAME = “tag name”

CLASS_NAME = “class name”

LINK_TEXT = “link text”

PARTIAL_LINK_TEXT = “partial link text”

Для открытия страницы по ссылке используется команда:

.get("url")

Для обновления страницы:

.refresh()

Чтобы ввести текст в определенное поле / часть страницы:

.send_keys("emailid@lambdatest.com")

В случае, если требуется удалить часть "скелета" сайта или информацию из поля:

.clear()

Для нажатия для элемена по кнопке или другой части сайта:

.click()

Получение кода страницы 
.page_source
2. Основные команды работы в BeautifulSoup

Вместо подгружения вебдрайвера и открытия нового окна браузера можно сразу высызвать по ссылке нужную нам страницу:

requests.get('url')

Далее уже выгружаем сам код страницы:

html = response.text

На основе кода формируем объект для парсинга нужных элементов страницы:

soup = BeautifulSoup(html, 'html.parser')

или (более универсальный и быстрый метод)

soup = BeautifulSoup(html, 'lxml')

Если требуется определенный элемент по ID извлечь из кода страницы:

soup.find(id='example')

Если требуется выбрать все элемени по отдельному ID:

soup.find_all(id='example')

Однако можно находить элементы по различным атрибутам:

soup.find_all(attrs={'data-name': 'my-data'}) или soup.find(attrs={'data-name': 'my-data'})

Частым являются запросы по парсингу повторяющихся элементов страницы:

soup.find_all('div', {'class': 'class_name'})

или

soup.find_all('div', class_='class_name')

Однако, если в элементе с классом есть дополнительный тег, то можно применить:

soup.find_all('div', {'class': 'class_name'}, 'tag_name')

Можно также отбирать элементы:

soup.select('element')

И также эти элементы удалять из кода страницы:

soup.extract('element')

Доступ к тренировочному скрипту