Автоматическое добавление постов в Facebook
Всем привет!
Недавно ко мне обратились с просьбой создать скрипт/программу, который мог бы автоматически добавлять посты в соцсети Facebook. Причем не только к себе на страницу, но и в группы. Мне показалось это крайне интересным, так как что-то подобное я уже проделывал с соцсетью Вконтакте (об этом напишу позже).
Итак, начну с того, что вам надо посетить мою страницу с «Началами«, если ваш компьютер ещё ни разу не использовал Python и Selenium, и установить необходимое ПО для автоматизации рутинных процессов.
Поставленная задача:
Заходить к себе на страницу, в поле «Что происходит?» на странице своего профиля в ФБ печатать ссылку, ждать пока появится описание, удалять ссылку (чтобы осталось только описание), отправлять пост. И повторить те же действия для открытых групп.
Для демонстрации записал видео:
Ссылка: https://www.youtube.com/embed/WBGv8bVv0K8
Разобьем процесс по пунктам:
1. Так как chromedriver.exe не имеет изначального кеша и файлов cookie, поэтому в начале любого скрипта надо прописать вход в соц сеть.
2. Переход на страницу своего профиля.
3. Нахождение поля ввода сообщения и ввод ссылки.
4. Удаление ссылки и отправка.
5. Закрытие драйвера.
Код:
А теперь к самому скрипту:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
import time from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException from selenium.webdriver import ActionChains from time import sleep ##открываем текстовый файл, где находится ваша ссылка, которую вы хотите запостить. И копируем из неё f = open('blogurl.txt', 'r') blogurl = f.readline() f.close() blogurl=blogurl+' ' #добавляем пробел, чтобы описание ссылки появилось kolbs = len(blogurl) # определяем количество символов print ('Blog url: '+blogurl) ##начало работы с selenium chrome_Options = webdriver.ChromeOptions() prefs = {"profile.default_content_setting_values.notifications" : 2} ## Отключение окон ФБ разрешения уведомлений chrome_Options.add_experimental_option("prefs",prefs) driver = webdriver.Chrome('chromedriver.exe', chrome_options=chrome_Options) # запускаем драйвер с указанными опциями #Вход в соц сеть driver.get("http://facebook.com") ## получаем главную страницу ФБ sleep(2) driver.find_element_by_id("email").send_keys('your@email.com') # вводим свой логин/почту пароль sleep(2) pwd = driver.find_element_by_id("pass") pwd.send_keys('YourpAsSwOrD') #вводим свой пароль pwd.send_keys(Keys.ENTER) sleep(5) driver.implicitly_wait(30) # указываем сколько мы даем времени драйверу на нахождение элементов #переход на собственную страницу driver.get("http://facebook.com/your page") sleep(5) e = driver.find_element_by_xpath("//*[@name='xhpc_message_text']") #находим поле для ввода текста act = ActionChains(driver) act.move_to_element(e).perform() # перемещаемся к нему, чтобы он стал видимым act = ActionChains(driver) act.click(e).perform() # делаем клик sleep(3) act = ActionChains(driver) act.send_keys(blogurl).perform() # вводим нашу ссылку sleep(3) # удаляем текст ссылки, оставляя только описание for _ in range(kolbs): act = ActionChains(driver) act.send_keys(Keys.BACKSPACE).perform() # находим кнопку отправить и компании по ней. Ждем отправки e = driver.find_element_by_xpath("//button[@type='submit'][@value='1']/span") act = ActionChains(driver) act.move_to_element(e).perform() sleep(1) act = ActionChains(driver) act.click(e).perform() sleep(3) #закрываем драйвер driver.close() |
Представленный выше скрипт постит ссылку только на странице профиля. Если вы хотите, скрипт для хостинга в индивидуальные группы, тогда пишите мне на anton@abrekhov.ru .
Если возникнут вопросы — пишите их в комментариях!