最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Playwright-python实现多端发帖 一文多发

    正文概述 掘金(极四维)   2020-12-21   737

    Playwright实现多端发帖

    一直想做,但是抓包太麻烦了,刚好接触到这个工具,一想其实用途还挺多,可以自己录个多平台发文脚本。例如写篇文章,想同步在简书、zblog、hu60、v2ex等平台发布,这几个平台刚好都支持markdown。

    那么我先根据路径读取md文件,以文件名为标题,文本为内容再执行各个发布方法,但在此之前,我们先获取登陆后的浏览器信息并保存吧

    登陆脚本

    登陆脚本一般一段时间只执行一次就行,只要cookie不过期

    from playwright import sync_playwright
    
    
    def hu60(playwright, name, pwd):
        browser = playwright.chromium.launch(headless=False)
        context = browser.newContext()
        page = context.newPage()
        page.goto("https://hu60.cn/q.php/user.login.html?u=index.index.html")
        page.fill("input[name=\"name\"]", name)
        page.fill("input[name=\"pass\"]", pwd)
        page.click("input[name=\"go\"]")
        page.close()
        # 保存浏览器数据至hu60文件 方便发布脚本读取
        context.storageState(path="hu60")
        context.close()
        browser.close()
    
    
    def zblog(playwright, name, pwd):
        browser = playwright.chromium.launch(headless=False)
        context = browser.newContext()
        page = context.newPage()
        page.goto("https://cway.top/zb_system/login.php")
        page.fill("input[name=\"edtUserName\"]", name)
        page.fill("input[name=\"edtPassWord\"]", pwd)
        page.close()
        context.storageState(path="cway")
        context.close()
        browser.close()
    
    
    with sync_playwright() as playwright:
        hu60(playwright, '帐号', '密码')
        zblog(playwright, '帐号', '密码')
    

    发布脚本

    接着我们可以直接执行发布脚本了,键入文本路径即可

    from playwright import sync_playwright
    
    
    def zblog(playwright, title, content, id):
        import time
        browser = playwright.chromium.launch(headless=False)
        context = browser.newContext(storageState="cway")
        page = context.newPage()
        page.goto("https://cway.top/")
        page.click("text=\"新建文章\"")
        page.click("input[name=\"Title\"]")
        page.fill("input[name=\"Title\"]", title)
        page.fill("//div[normalize-space(.)='Enjoy Markdown! coding now...​x 1​']/div[1]/textarea", content)
        time.sleep(1)
        page.selectOption("select[id=\"cmbCateID\"]", id)
        page.click("input[type=\"submit\"]")
        page.goto("https://cway.top/")
        text = page.innerText("body")
        assert title in text
        page.close()
        context.close()
        browser.close()
    
    
    def hu60(playwright, title, content, id):
        browser = playwright.chromium.launch(headless=False)
        context = browser.newContext(storageState="hu60")
        page = context.newPage()
        page.goto("https://hu60.cn/q.php/index.index.html")
        page.click("text=\"发帖\"")
        page.click("text=/.*" + id + ".*/")
        page.click("input[name=\"title\"]")
        page.fill("input[name=\"title\"]", title)
        page.fill("textarea[name=\"content\"]", content)
        page.click("input[name=\"go\"]")
        context.close()
        browser.close()
    
    
    def jianshu(playwright, title, content, id):
        import time
        browser = playwright.chromium.launch(headless=False)
        context = browser.newContext(storageState="jianshu")
        page = context.newPage()
        page.goto("https://www.jianshu.com/writer#/")
        page.click("text=\"" + id + "\"")
        with page.expect_navigation():
            page.click("text=\"" + id + "\"")
        page.click("//span[normalize-space(.)='新建文章']")
        page.click("//div[normalize-space(.)='发布文章']/input[normalize-space(@type)='text']")
        page.fill("//div[normalize-space(.)='发布文章']/input[normalize-space(@type)='text']", title)
        page.click("textarea[id=\"arthur-editor\"]")
        page.fill("textarea[id=\"arthur-editor\"]", content)
        time.sleep(2)
        page.click("//a[normalize-space(.)='发布文章']")
        page.close()
        context.close()
        browser.close()
    
    
    with sync_playwright() as playwright:
        path = input('请输入md或txt文件路径或在控制台拖入文件:')
        file = open(path, 'r')
        fn = file.name.split('/')
        # 获取标题
        title = fn[len(fn) - 1].split('.')[0]
        # 获取内容
        content = file.read()
        # 分类处理 由于每个平台文章分类不一样 酌情修改
        # 指定分类
        cata = 'py'
        zbcata, hu60cata, jscata = '7', 'Java', 'Java'
        if cata == 'java':
            zbcata, hu60cata, jscata = '7', 'Java', 'Java'
        if cata == 'py':
            zbcata, hu60cata, jscata = '18', 'Python', 'Python'
        zblog(playwright, title, content, zbcata)
        hu60(playwright, title, content, hu60cata)
        # jianshu(playwright, title, content, jscate)
    

    起源地下载网 » Playwright-python实现多端发帖 一文多发

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元