51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3543|回复: 1
打印 上一主题 下一主题

[转贴] 通过Selenium进行博客备份

[复制链接]
  • TA的每日心情
    擦汗
    5 天前
  • 签到天数: 1027 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-5-11 09:54:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    字体:大 中 小 | 上一篇 | 下一篇 |我要投稿 | 推荐标签: selenium 自动化测试框架

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

      2.下载chrome浏览器
      3.下载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.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:\Tool\chromedriver.exe')  # 打开chrome驱动
      ergodic_catalog(wd)
      print('finish')


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-9 14:08
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2021-5-17 09:00:29 | 只看该作者
    selenium不仅可以做自动化,还可以调皮
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-5 05:16 , Processed in 0.079470 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表