通过Selenium进行博客备份

发表于:2021-5-11 09:26  作者:Bill_H   来源:博客园

字体: | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 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[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:\Tool\chromedriver.exe')  # 打开chrome驱动
  ergodic_catalog(wd)
  print('finish')

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理

评 论

论坛新帖



建议使用IE 6.0以上浏览器,800×600以上分辨率,法律顾问:上海信义律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2021, 沪ICP备05003035号
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪公网安备 31010102002173号

51Testing官方微信

51Testing官方微博

扫一扫 测试知识全知道