5000 мертвых блогов и Python

5000 блогов и Python

Привет всем! Несколько лет назад, когда поисковые системы еще сильно учитывали количество ссылок я нарегистрировал больше 5000 блогов, в которые постил все, что нужно было клиентам: негативы, отзывы, ссылки положительные, и не очень. Однако — время шло, количество ссылок учитывалось уже не так рьяно, и все эти блоги были заброшены за ненадобностью. Буквально несколько дней назад я вспомнил о своем запасе, и задумался — а как проверить — живы еще блоги, или нет? На помощь приходит Python. Итак, разбираемся с задачей по шагам.

  • Заходим на ссылку
  • Проверяем — жива она или нет
  • Если нет — сохраняем в список мертвых. Если жива — сохраняем в список живых.
  • Сам код выглядит так:

    import time #Для управления временем
    import random #Для работы со случайными величинами
    import requests #Для работы с запросами
    from fake_useragent import UserAgent # для генерации поддельного запроса на сервер
    from bs4 import BeautifulSoup # Для обработки получаемых данных

    full_list = [] #Объявляем список, в который будем вносить все ссылки на блоги
    protocol = str('https://') #В силу того, что все ссылки на блоги хранятся у меня в текстовом файле, да еще и в виде просто названий - приходится формировать ссылку из трех составляющих: протокол (https), ссылка (имя блога), и расширение домена (.сом)
    domain = str('.wordpress.com')
    with open('blog.txt', 'r', encoding='utf8') as f: #Открываем файл с названиями блогов
    for blog in f: #Для каждой строчки в файле
    blog = str(blog.strip()) #Удаляем лишние пробелы
    lll = protocol + blog + domain #Собираем полную ссылку на блог
    full_list.append(lll) #Записываем полученную ссылку в список full_list

    for page_link in full_list: #Для каждого значения в списке
    random_time = random.randrange(1, 5) #создаем случайный промежуток времени от 1 до 5 секунд
    print('Отдыхаем', random_time, 'секунд... ')
    time.sleep(random_time) #Отдыхаем случайное время - что бы сервер не обалдел от количества запросов и нас не забанил
    response = requests.get(page_link, headers={'User-Agent': UserAgent().chrome}) #Заходим на ссылку, прикрываясь типа настоящим запросов от пользователя
    html = response.content #Получаем ответ в виде полного кода страницы
    soup = BeautifulSoup(html, 'html.parser') #Подключаем Прекрасный Суп :)
    title = soup.html.head.title #И выгребаем из кода заголовки

    for i in title: #Для всех заголовков
    if i == 'WordPress.com': #Если заголовок равен WordPress.com
    print(page_link, 'мертв :(') #Выводим сообщение - блог такой-то мертв
    with open('die_blogs.txt', 'a', encoding='utf8') as f: #Открываем файл
    f.write(page_link + '\n') #Пишем название блога в файл с именами мертвых блогов
    elif i != 'Wordpress.com': #Если же значение заголовка НЕ РАВНО WordPress
    print(page_link, 'жив!') #Выводим сообщение - блог такой-то жив
    with open('live_blogs.txt', 'a', encoding='utf8') as f: #Открываем файл
    f.write(page_link + ' \n') #Пишем название блога в файл с именами живых блогов

    Конечно, можно было бы запариться с помощью регулярных выражений, но…

    Сам код программы представлен выше, потому ссылку на него приводить смысла нет. Понравилась запись —
    сделайте репост на свою страницу в социальной сети 🙂 В случае возникновения вопросов — задавайте!

    UPD: в свете вскрывшихся в результате работы минусов код был переработан — добавлена пауза в работе (иначе со временем срабатывала защита от автоматических запросов), сам исходный список блогов так же обновляется с учетом проверенных — они просто удаляются 🙂 В случае сбоя в работе — мы начинаем проверять блоги не с самого начала списка, а с места, где произошел сбой. Код доступен по ссылке.