有一天
突然想知道博客写了多少字 ⛵️​ …

1. 打开主页

利用 selemium 打开博客主页:

import time
from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('https://blog.csdn.net/qq_41140138')
browser.implicitly_wait = 5

2. 加载博客列表

由于博客列表没有显示全部博客,需要滚动到页面底部才能进一步加载内容

加载完成的标志是出现一个停留三秒钟的弹窗,所以模拟向下滚动页面

while True:# scroll 5000 per 0.2 secondsbrowser.execute_script("window.scrollBy(0,5000)")time.sleep(0.2)# finish loadingtry:browser.find_element_by_xpath('//div[@role="alert"]')print("Reach buttom!")breakexcept:continue

3. 页面跳转

获取窗口和跳转窗口的方法如下:

# 读取当前页面
handle_main = browser.current_window_handle# 读取所有窗口
handles = browser.window_handles# 跳转到最后一个窗口
browser.switch_to.window(handles[-1])

4. 统计每篇博客字数

遍历主页中所有博客,在新的窗口定位 article 标签读取文字(忽略代码片段)

步骤:

  1. 定位博客,点击链接
  2. 跳转页面,打开博客
  3. 读取内容,统计字数
  4. 回到博客主页
# title, content and code
blog_link_xpath = '//article[@class="blog-list-box"]//a'
title_path = '//article[@class="blog-list-box"]//div[@class="blog-list-box-top"]'
content_path = '//div[@class="blog-content-box"]'
code_path = '//pre'handle_main = browser.current_window_handlecount = 0
blog_links = browser.find_elements_by_xpath(blog_link_xpath)for blog_link in blog_links:blog_link.click()handles = browser.window_handlesbrowser.switch_to.window(handles[-1])# contentblog = browser.find_element_by_xpath(content_path)blog_title = browser.find_element_by_xpath('//h1[@class="title-article"]').textblog_content = blog.text# codecode_len = 0codes = browser.find_elements_by_xpath(code_path)for code in codes:code_len = code_len + len(code.text)# caculatecount = count + len(blog_content) - code_lenprint(blog_title + ":\t" + str(len(blog_content)-code_len) + ' words')browser.close()browser.switch_to.window(handle_main)print(count)

运行结果如下:

Reach buttom!
用 Python 绘制 XMind 思维导图: 937 words
Python 多线程: 1557 words
Python socket 编程:   2253 words
Appium + Python APP 自动化测试学习:   1178 words
使用 xpath 选择元素:  1228 words
Selenium 元素查找和操作元素: 1658 words
Python + Appium 简单 5 步搭建环境(面向小白):    1625 words
一文读懂 Python 装饰器:    344 words
pytest 函数测试:    870 words
pytest 快速入门:    622 words
RSA 非对称加密:  3241 words
Selenium 入门学习:  2278 words
Python 面向对象:    531 words
...167552

一共 167552 个字

用 selenium 统计博客总字数相关推荐

  1. 自制脚本,统计个人csdn博客总字数

    目录 前言 一.自动爬取所有文章的链接地址 二.字数统计 总结 前言 在csdn写博客也已经一年多了,经常忍不住想知道自己总共写了多少字.可是目前官方只能统计单篇文章的总字数,却没有提供所有文章的字数 ...

  2. python使用BeautifulSoup获取csdn单个博客文章字数

      之前一直想统计每年博客大致写了多少字数,但是csdn中好像只有文章数统计,没有字数统计(或者是一直没有发现相关的功能).最近学习python的网络相关模块时,python关于网页读取及抓取网页内容 ...

  3. linux 定时任务 (python 爬虫统计博客数据)

    linux 定时任务 (python 爬虫统计博客数据) 1. 任务目标 定时任务中,每天统计一下今日博客的各项数据,并以邮件的形式发送给自己. 2. linux 定时任务 (python) 一切复杂 ...

  4. Hexo-fluid主题设置统计博客阅读量

    Hexo-fluid主题设置统计博客阅读量 开始小插曲: 我使用的是sublime文本编辑器: [官网]  https://www.sublimetext.com/ 正戏开始 查找关键字:web_an ...

  5. DalNur | 博客总目录

    目 录 Blog Links 一.前言 二.办公/office 2.1 Word 2.2 Excel 三.绘图/Draw 3.1 AutoCAD 3.2 Revit 四.前/后处理 4.1 Hyper ...

  6. 纪念正月十六工作室博客总访问量突破百万

    古有政通人和,百废俱兴,乃重修岳阳楼,并属予作文以记之.虽类比堪堪勉强,但IT人性情率直,不免也潦草抒情.固也称:我们亦有我们的"岳阳楼"!此间初露锋芒,崭露头角,事业经营蒸蒸日上 ...

  7. 【Blog】CSDN博客总排行榜

    CSDN博客总排行榜 https://blog.csdn.net/rank/writing_rank_total

  8. wordpress统计博客访问量

    问题描述 自己的博客搭建完毕之后,发现博客不知道被多少人访问过了,每天有多少人访问,多少人经常来访问等等.最好有一个工具能统计博客被浏览量,这不仅是对自己的一个鼓励,也是别人对你博客的认可! 解决方案 ...

  9. 如何统计博客园的个人博客访问量

    使用过新浪博客的人都知道,新浪博客的首页有访问量统计功能,迁移到博客园之后发现博客园却没有这项功能,所幸博客园在后台管理的设置选项中有一个公告栏和设置页首页脚代码功能,使用起来非常灵活和方便.借此我们 ...

最新文章

  1. “河边一群鹅,嘘声赶落河。捉得鹅来填肚饿,吃完回家玩老婆!”
  2. JavaScript中的继承入门
  3. vc使用opencv库 读取图像
  4. java控制cmd导出dmp文件_cmd的操作命令导出导入.dmp文件
  5. 查询SQLSERVER执行过的SQL记录
  6. 以太坊2.0合约余额新增3872 ETH
  7. Erlang 之父 Joe Armstrong 逝世,享年 68 岁
  8. SQL Server中的MD5实现方法
  9. 基于Lua语言的wireshark插件编写
  10. wpf/sl下的复合程序-CAG入门
  11. Incorrect argument type to variable ‘max_allowed_packet‘解决方法
  12. 414.Fizz Buzz
  13. window启动activemq失败
  14. linux常用操作命令总结
  15. ICMP重定向(ICMP redirect)实验分析
  16. 干货 | 何延哲:App个人信息安全治理的规则、案例与思考
  17. 6个越南主流社交媒体软件简单介绍
  18. 使用 Qt for Android 获取并利用手机传感器数据(下篇)使用C++实现功能
  19. 阿里云服务器安装tomcat
  20. 去BAT,你应该要看一看的面试经验总结(转)

热门文章

  1. java+mysql 基于ssm的医院预约挂号系统(java ,web)
  2. 仓库管理系统(WMS)有哪些好处?
  3. 2.6 KNN(K近邻算法)
  4. 嵌入式Linux学习(一)
  5. 复杂美公司Chain33区块链开发
  6. LR关联及web_reg_save_param方法浅析
  7. 二十一、ADC模数转换实验
  8. 华为OD机试 -众数和中位数(Java) | 机试题+算法思路+考点+代码解析 【2023】
  9. 一种无痕过渡下拉刷新控件的实现思路
  10. Kubernetes部署(五):k8s项目交付----(2)配置中心