写在前面:坚持解决一个问题,花了两三个小时的时间终于解决了问题,最后我的自动化发布文章的功能终于实现了。 想法来源:玩自媒体的朋友都知道,如果把自己的文章同步到多个平台就需要每个平台都需要登录一下,再重新发布一下,所以我就在想能不能让Python来一键完成这些操作呢! 于是放假的这两天我就开始做了一个雏形,总算做好了。效果图如下: 首先我先在开源中国上发来进行小小的练手,为什么选这个网站呢?因为这个网站没有要求输入验证码,哈哈,验证码的问题就避免了,另外因为每个平台的验证码都不一样,所以处理机制也不一样,所以我本人也不想针对验证码来处理验证码问题。除非是大平台,我可能会单独处理一下,其它的小平台我都打算用cookie来绕过验证码问题! 实现思路
完整代码# coding:utf-8from selenium import webdriverimport timeuser_main_url = 'https://my.oschina.net/u'username = 'XXX'password = 'XXX'url = 'https://www.oschina.net/home/login?goto_page=https%3A%2F%2Fmy.oschina.net%2Fu%2F564070%2Fblog'driver = webdriver.Firefox()driver.get(url)# 浏览器窗口最大化driver.maximize_window()driver.find_element_by_id('userMail').send_keys(username)driver.find_element_by_id('userPassword').send_keys(password)driver.find_element_by_xpath('//*[@id='account_login']/form/div/div[5]/button').click()# 进入主页while True: # 判断是不是在个人主页中。 if user_main_url in driver.current_url: break else: # 不在个人主页中就继续加载了。 time.sleep(1)# 点击进入写作页。driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/div[1]/div[4]/a').click()time.sleep(1)# 填写标题titleInput = driver.find_element_by_xpath('//*[@id='title']')titleInput.send_keys(u'666666模333444444')# 填写内容contentInput = driver.find_element_by_id('mdeditor')contentInput.send_keys(u'666666模拟3334444422222。。。。。')#通过网页源代码可以查看value=428612正好对应着前端开发。# 选择文章的类型值,js = 'document.getElementById('sys_sort').value='428612';'driver.execute_script(js)# 修改选择的类型文本js = 'document.getElementsByClassName('select-show')[2].innerText='前端开发';'driver.execute_script(js)# 点击提交submit = driver.find_element_by_xpath('//*[@id='blog-form']/div[3]/div/button[2]')submit.click()print '发布成功!' 当然这样还只是一个非常粗糙的实现。后面我会进一步优化,敬请期待。有啥好意见欢迎留言! |
|