通过Selenium进行博客备份

发表于:2021-5-11 09:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Bill_H    来源:博客园

  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),我们将立即处理
精选软件测试好文,快来阅读吧~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号