5000 блогов и Python
Привет всем! Несколько лет назад, когда поисковые системы еще сильно учитывали количество ссылок я нарегистрировал больше 5000 блогов, в которые постил все, что нужно было клиентам: негативы, отзывы, ссылки положительные, и не очень. Однако — время шло, количество ссылок учитывалось уже не так рьяно, и все эти блоги были заброшены за ненадобностью. Буквально несколько дней назад я вспомнил о своем запасе, и задумался — а как проверить — живы еще блоги, или нет? На помощь приходит Python. Итак, разбираемся с задачей по шагам.
Сам код выглядит так:
import time #Для управления временем<br>import random #Для работы со случайными величинами<br>import requests #Для работы с запросами<br>from fake_useragent import UserAgent # для генерации поддельного запроса на сервер<br>from bs4 import BeautifulSoup # Для обработки получаемых данных<br><br>full_list = [] #Объявляем список, в который будем вносить все ссылки на блоги<br>protocol = str('https://') #В силу того, что все ссылки на блоги хранятся у меня в текстовом файле, да еще и в виде просто названий - приходится формировать ссылку из трех составляющих: протокол (https), ссылка (имя блога), и расширение домена (.сом)<br>domain = str('.wordpress.com')<br>with open('blog.txt', 'r', encoding='utf8') as f: #Открываем файл с названиями блогов<br>    for blog in f: #Для каждой строчки в файле<br>        blog = str(blog.strip()) #Удаляем лишние пробелы<br>        lll = protocol + blog + domain #Собираем полную ссылку на блог<br>        full_list.append(lll) #Записываем полученную ссылку в список full_list<br><br>for page_link in full_list: #Для каждого значения в списке<br>    random_time = random.randrange(1, 5) #создаем случайный промежуток времени от 1 до 5 секунд<br>    print('Отдыхаем', random_time, 'секунд... ')<br>    time.sleep(random_time) #Отдыхаем случайное время - что бы сервер не обалдел от количества запросов и нас не забанил<br>    response = requests.get(page_link, headers={'User-Agent': UserAgent().chrome}) #Заходим на ссылку, прикрываясь типа настоящим запросов от пользователя<br>    html = response.content #Получаем ответ в виде полного кода страницы<br>    soup = BeautifulSoup(html, 'html.parser') #Подключаем Прекрасный Суп :) <br>    title = soup.html.head.title #И выгребаем из кода заголовки<br><br>    for i in title: #Для всех заголовков<br>        if i == 'WordPress.com': #Если заголовок равен WordPress.com<br>            print(page_link, 'мертв :(') #Выводим сообщение - блог такой-то мертв<br>            with open('die_blogs.txt', 'a', encoding='utf8') as f: #Открываем файл<br>                f.write(page_link + '\n') #Пишем название блога в файл с именами мертвых блогов<br>        elif i != 'Wordpress.com': #Если же значение заголовка НЕ РАВНО WordPress<br>            print(page_link, 'жив!') #Выводим сообщение - блог такой-то жив<br>            with open('live_blogs.txt', 'a', encoding='utf8') as f: #Открываем файл<br>                f.write(page_link + ' \n') #Пишем название блога в файл с именами живых блогов
Конечно, можно было бы запариться с помощью регулярных выражений, но…
Сам код программы представлен выше, потому ссылку на него приводить смысла нет. Понравилась запись —
сделайте репост на свою страницу в социальной сети 🙂 В случае возникновения вопросов — задавайте!
UPD: в свете вскрывшихся в результате работы минусов код был переработан — добавлена пауза в работе (иначе со временем срабатывала защита от автоматических запросов), сам исходный список блогов так же обновляется с учетом проверенных — они просто удаляются 🙂 В случае сбоя в работе — мы начинаем проверять блоги не с самого начала списка, а с места, где произошел сбой. Код доступен по ссылке.
Support the Blog!
Running a blog takes a lot of effort, time, and passion. Your donations help improve the content, inspire new ideas, and keep the project going.
If you’ve enjoyed the blog’s materials, any support would mean the world to me. Thank you for being here! ❤️