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