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

  之前一直想统计每年博客大致写了多少字数,但是csdn中好像只有文章数统计,没有字数统计(或者是一直没有发现相关的功能)。最近学习python的网络相关模块时,python关于网页读取及抓取网页内容方面的功能比较强大及简便,于是想试试编写python脚本进行字数统计。
  参考文献2-3中介绍的基本抓取网页内容的思路是通过分析网页结构,用正则表达式匹配要抓取的内容,不过文献后面又介绍了使用BeautifulSoup提取数据的方式,后者使用起来更简单,本文使用BeautifulSoup获取网页内容。根据参考文献1,采用以下命令安装beautifulsoup4及HTML解析器(参考文献1中推荐安装lxml)

pip install beautifulsoup4
pip install lxml

在这里插入图片描述
在这里插入图片描述
  通过分析csdn网页源码,发现博客主要内容包含在article标签内(查看了多篇csdn文章,都是在articls内),如下图所示。
在这里插入图片描述

  于是统计单个博客文章字数的思路主要是读取网页内容->查找articls标签->获取标签内文本内容->计算字符串数量。由于是初步试手,暂时先不考虑精确计算,本人的文章中主要以文字为主,所以暂时想的是找出articles标签中的段落,忽略其它标签,计算段落内容总字符数(暂时将图片地址也作为文字)。
  BeautifulSoup的构造函数包括2个参数,第一个参数是文档字符串或是文件句柄,第二个参数是文档解析器。BeautifulSoup不支持直接指定网址,为此需要使用urllib模块中的urlopen打开网页后传入BeautifulSoup。
  代码比较简单,主要代码如下:

from bs4 import BeautifulSoup
import urllib.request

response = urllib.request.urlopen("https://blog.csdn.net/gc_2299/article/details/124464082?spm=1001.2014.3001.5501")
soup1=BeautifulSoup(response.read(), "lxml")

print(soup1.title)
print(soup1.title.text)
result=soup1.article.find_all('p')

textlengh=0
for p in result:
    textlengh+=len(p.text.strip())

print(textlengh)

  代码中的网址是前几天翻译的文档,编辑状态下看到的字数是1829,使用程序计算的结果是1847,相差不算太大,程序的执行结果如下图所示:
在这里插入图片描述
  再找另一篇《(翻译)表单中电话号码字段的不良设计》测试,该文编辑状态下的字数是1451,使用程序计算的结果是1439,也还凑合。
在这里插入图片描述  总的来说,计算精度还有待提高,后续接着学习怎么从博客主页获取一年的文章清单。

参考文献:
[1]https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#id8
[2]Python从菜鸟到高手
[3]python基础教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值