• 通过selenium进行博客备份


    1.安装selenium

    pip3 install selenium -i https://pypi.douban.com/simple
    

    2.下载chrome浏览器

    3.下载chrome浏览器驱动
    chrome浏览器驱动下载地址

    4.执行代码,保存博客

    from selenium import webdriver
    import time
    
    def get_title(wd):
        '''获取当前页的所有博文标题控件'''
        # 获取当前页的所有博文标题内容
        elements = wd.find_elements_by_class_name('postTitle')  
        titles = []  
        for i in elements:
            titles.append(i.text)
        # 从所有tag中选出是博文标题的tag
        elements_ = wd.find_elements_by_tag_name('span')  
        elements = []
        for i in elements_:
            if i.text in titles:
                elements.append(i) 
        return elements
    
    def save_page(wd):
        '''保存当前页面至程序根目录'''
        f = open(wd.title+'.html','wb')
        time.sleep(1.) # 保证浏览器响应成功后再进行下一步操作
        f.write(wd.page_source.encode()) 
        time.sleep(1.)
        print('写入成功')
        #关闭文件
        f.close()  
    
    def ergodic_article(wd):
        '''遍历当前页面的所有博文并保存'''
        elements = get_title(wd)
        num = len(elements)  # 当前页的博文数量
        for i in range(num):
            elements[i].click()
            print(i)
            save_page(wd)
            wd.back()
            elements = get_title(wd)
    
    def next_page(wd):
        '''翻到下一页'''
        elements = wd.find_elements_by_tag_name('a') 
        for i in elements:
            if i.text == '下一页':
                print('next page')
                i.click()
                return 0
        return 1
          
    def ergodic_catalog(wd):
        '''遍历博文目录的每一页,并保存每一页的所有博文'''
        wd.get('https://www.cnblogs.com/bill-h/')  # 打开博客首页
        while 1:
            ergodic_article(wd)
            t = next_page(wd)
            if t:
                return
    
    wd = webdriver.Chrome(r'D:Toolchromedriver.exe')  # 打开chrome驱动
    ergodic_catalog(wd)
    print('finish')
    

    参考资料:
    Python + Selenium Web自动化 全套教程 - 华为大叔7天带你入门
    白月黑羽教Python-自动化测试

  • 相关阅读:
    PostgreSQL 安装和使用
    动态sql
    知识储备
    java空和非空判断
    我的第一篇博客
    正式工作:PreparedStatement 参与的
    mysql part2DML(数据操作语言)
    DCL(权限 ,用户)
    DQL(数据查询语言)
    准备工作:Eclipse 导入 mysql连接java 的jar包
  • 原文地址:https://www.cnblogs.com/bill-h/p/14433667.html
Copyright © 2020-2023  润新知