selenim可以操控web页面,就以WordPress网站来说吧,可以实现WordPress自动发布文章,那么们来实现一下试试吧。那么先分析一下,按照下面的图片,我们需要输入标题,接着是内容,然后就可以发布文章了,但是这样还不如自己用手解决,我们需要添加到固定的分类中,添加标签,添加关键字,这里我使用的是Yast SEO插件,可以设置关键字,添加元描述,元描述的话发现它不是一个可输入的框,是一个div,也就是不能使用send_keys来输入内容,所以这个先暂且不管。
#selenium实现WordPress自动发布文章
import time,redis
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
def wordpress_selenium(title,content,key_value):
#设置首选项
#option =webdriver.ChromeOptions()
#option.add_argument('headless') #添加之后不会看到浏览器的界面
#driver=webdriver.Chrome(chrome_options=option)
driver=webdriver.Chrome()
timeout=30
#driver.maximize_window() #最大窗口
#模拟登录 添加cookie,格式为name: 等号左边 , value:等号右边
cookie_wordpress=[{'name': '', 'value': ''},
{'name': '', 'value': ''},
{'name': '', 'value': ''},
{'name': '', 'value': ''},
{'name': '', 'value': ''},
{'name': '', 'value': ''},
{'name': '', 'value': ''}]
driver.get('https://www.e1yu.com/wp-admin/index.php') #登录后台首页
for cookie in cookie_wordpress:
driver.add_cookie(cookie) #添加cookies
driver.get('https://www.e1yu.com/wp-admin/post-new.php') #打开发布文章的页面
#找到标题框,写标题
write_title=WebDriverWait(driver,timeout).until(lambda a:a.find_element_by_xpath('//*[@id="title"]'))
write_title.click()
write_title.send_keys(title)
#找到正文框,写正文
write_content=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="content"]'))
write_content.click()
write_content.send_keys(content)
#设置关键字
write_key_value = WebDriverWait(driver, timeout).until(lambda b: b.find_element_by_xpath('//*[@id="focus-keyword-input-metabox"]'))
write_key_value.click()
write_key_value.send_keys(key_value)
# #选择分类目录
driver.execute_script("window.scrollBy(0,200)") #向下滚动一点
for i in range(10): #分类目录也是需要滚动的
browser=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="category-all"]'))
ActionChains(driver).drag_and_drop_by_offset(browser, 0, 10).perform() #相当于拖动鼠标移动,滚动滑块
write_nav=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="in-category-317"]'))#找到分类目录
write_nav.click()
#添加标签
write_content = WebDriverWait(driver, timeout).until(lambda b: b.find_element_by_xpath('//*[@id="new-tag-post_tag"]'))
write_content.click() #找到标签框
time.sleep(1)
write_content.send_keys('这是一个标签')#输入内容
write_tag=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="post_tag"]/div/div[2]/input[2]'))
write_tag.click()#找到添加按钮,点击添加
#滚动到顶部发布
driver.execute_script('document.documentElement.scrollTop=0') #滚动到顶部
submin=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="publish"]')) #找到发布按钮
submin.click()
if __name__=='__main__':
title='WordPress世界你好'
content='这是WordPress第一篇文章'
key_value='这是一个关键字'
wordpress_selenium(title,content,key_value)
操作的时候要设置等待,不然元素没加载出来找不到就会报错,title和content,还有关键字都可以替换。这里可以这样玩,先抓取适量的文章,存到数据库中,然后读取,就这样可以实现自动发布文章,速度受网速和电脑配制的影响,还取决于你网站服务器的性能,那么自己玩玩吧。
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!