поиск ссылок и частоты упоминания ника или имени
Обратите внимание, что для выполнения веб-скрейпинга необходимо соблюдать правила использования сайтов (например, проверять файл robots.txt на сайте, чтобы убедиться, что скрейпинг разрешён).
import requests
from bs4 import BeautifulSoup
import re
from collections import Counter
def search_name_in_url(url, name):
try:
response = requests.get(url)
response.raise_for_status() # Проверка на ошибки
soup = BeautifulSoup(response.text, 'html.parser')
# Получаем текст страницы
text = soup.get_text()
# Ищем упоминания имени
mentions = re.findall(r'\b' + re.escape(name) + r'\b', text, re.IGNORECASE)
return len(mentions), mentions
except requests.RequestException as e:
print(f"Ошибка при запросе к {url}: {e}")
return 0, []
def main():
# Список URL для поиска
urls = [
'https://example.com', # Замените на реальные URL
'https://another-example.com'
]
name = input("Введите имя или ник для поиска: ")
total_mentions = 0
all_mentions = []
for url in urls:
count, mentions = search_name_in_url(url, name)
total_mentions += count
all_mentions.extend(mentions)
print(f"На {url} найдено упоминаний: {count}")
print(f"\nОбщее количество упоминаний '{name}': {total_mentions}")
print(f"Все упоминания: {all_mentions}")
if __name__ == "__main__":
main()
Пояснение к коду:
Импорт библиотек: Мы используем requests для HTTP-запросов, BeautifulSoup для парсинга HTML и re для регулярных выражений.
Функция search_name_in_url: Эта функция принимает URL и имя для поиска, делает запрос к URL, парсит текст страницы и ищет упоминания имени.
Основная функция main: Здесь мы определяем список URL, запрашиваем имя у пользователя и обрабатываем каждый URL, выводя количество упоминаний.
Обработка ошибок: Используется обработка исключений для обработки ошибок, связанных с запросами.
Замените https://example.com и https://another-example.com на реальные URL, с которых вы хотите собирать данные.
Убедитесь, что вы соблюдаете правила использования сайтов, чтобы не нарушать их политику.
Свидетельство о публикации №124122706832