Cкрейпинг (парсинг) — процесс извлечения информации с веб-сайтов. Это включает в себя анализ HTML-кода веб-страниц, извлечение текстовой информации, изображений, ссылок и других данных. Суть скрейпинга заключается в автоматизированном сборе данных, что позволяет улучшить процессы анализа, мониторинга и принятия решений.
Для начала импортируем необходимые библиотеки:
from google.cloud import bigquery
from selenium import webdriver;
from selenium.webdriver.common.by import By
import asyncio
import os
import pandas as pd
import re
import telegram
Укажем, сколько раз жать кнопку "Еще":
MAX_LOAD_MORE_CLICKS = 5
Инициируем экземпляр веб-драйвера, чтобы открыть страницу:
driver = webdriver.Chrome()
driver.get(URL)
Мы будем парсить сайт с отзывами, и потому для каждой записи будем собирать сам текст отзыва, ссылку на него и дату публикации:
reviews_lst = []
urls_lst = []
dates_lst = []
Откроем страницу и выберем HTML-элементы с текстом ("col-xs-10"), ссылкой ("read-more-serm") и датой ("divh1 red"):
count = 0
while count <= MAX_LOAD_MORE_CLICKS:
try:
WebDriverWait(driver, DELAY)
full_reviews = driver.find_elements(By.XPATH, "//*[@class='col-xs-10']")
for element in full_reviews:
# Вырежем пустые оценки по критериям
text = element.text.replace('Читать полностью отзыв и комментарии', '')
reviews_lst.append({'text': text})
# Выделим ссылки на отзывы
urls = driver.find_elements(By.XPATH, "//*[@class='read-more-serm']/a")
for element in urls:
review_absolute_path = element.get_attribute("href")
urls_lst.append(review_absolute_path)
dates = driver.find_elements(By.XPATH, "//*[@class='divh1 red']")
for element in dates:
element = element.text
when = re.sub(' \|(.*)', '', element)
dates_lst.append(when)
i = 0
while i < len(reviews_lst):
review = {'text': reviews_lst[i]['text'], 'when': dates_lst[i], 'url': urls_lst[i]}
reviews.append(review)
i += 1
count += 1
except TimeoutException:
break
Сольем результат в Датафрейм (DataFrame):
scrapedReviews = pd.DataFrame(reviews)
scrapedReviews.insert(0, 'id', range(0, 0 + len(scrapedReviews)))
scrapedReviews.to_csv('scrapedReviews.csv', index=False)
© Лена Капаца. Все права защищены.