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

本文介绍如何使用Python和BeautifulSoup抓取CSDN博客文章内容,通过分析article标签计算字数,实践过程中探讨了精度改进的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  之前一直想统计每年博客大致写了多少字数,但是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基础教程

回答: 在Python爬虫中,如果需要点击按钮,可以使用Selenium库来模拟点击操作。首先,根据需要点击的按钮的类名或其他属性,使用`find_element_by_class_name`方法找到该按钮元素。然后,使用`click()`方法来模拟点击操作。例如,可以使用以下代码来点击一个按钮: ``` result = driver.find_element_by_class_name('需要点击的类名') result.click() ``` 接下来,可以对展开的网页进行爬取。可以使用`driver.page_source`方法获取网页的源代码,然后使用BeautifulSoup库对源代码进行解析。例如,可以使用以下代码来解析网页: ``` selenium_page = driver.page_source driver.quit() soup = BeautifulSoup(selenium_page, 'html.parser') ``` 然后,可以使用`find`或`find_all`方法来找到需要的元素。例如,可以使用以下代码来找到单个元素或多个元素: ``` # 单个元素 one = soup.find('div', {'class': '布拉布拉类名'}) # 多个元素 many = soup.find_all('div', {'class': '咕噜咕噜类名'}) ``` 最后,可以根据需要进一步处理和提取数据。例如,可以使用`get_text()`方法来获取元素的文本内容。 #### 引用[.reference_title] - *1* [Python爬虫——小白笔记(一)](https://blog.csdn.net/m0_64139004/article/details/127202350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python爬虫+selenium模拟点击+网页内容需要点击打开](https://blog.csdn.net/weixin_41897122/article/details/104759135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值