Python爬虫 - 统计自己读过小说的字数

本文介绍如何使用Python爬虫统计SF轻小说网站上收藏夹内小说的字数。通过分析网站结构,利用requests和re包进行数据抓取,无需模拟登录。详细解释了爬取过程和代码实现。
摘要由CSDN通过智能技术生成

写在前面的废话

  1. 没错,这个爬虫的确只是我想统计下自己读小说的速度和自己已经读了多少小说写的,可以爬一些小说的数据,不能用来爬小说本身。不过稍加改进可以实现更多的功能,我会在之后的文章实现其他的功能。
  2. 话说我都好久没有发过文章了啊,所以就来水一篇博客了(x)

正文

一、使用工具和目标网站的分析

使用的工具,恩,如题,我使用的是 python3.7,其他版本问题应该也不大。
我用到的包有三个:

  • requests 用于发出http请求来获取数据
  • re 用来匹配正则表达式的(我没有使用 HTML 解析器)
  • time

然后是网站的分析了。
这次我拿 SF轻小说 http://book.sfacg.com/ 这个网站开刀。

对网站分析就不难整理接下来的思路了。网站自带收藏夹功能,而访问别人的收藏夹并不需要登录,因而在之后爬取数据的时候不需要模拟登录,可以比较方便地爬取数据。收藏夹内有各本小说的标题,作者,链接等数据,在小说页就可以看到字数以及更多我们想要的数据了。因此我们可以在阅读时把小说添加进收藏夹内,之后统计整个收藏夹就可以得到我们想要的数据了。

二、开工!

随便打开一个火袋页:
火袋(收藏夹)的页面
就可以看到里面的基本信息了。
比如这个火袋的 URL 是: http://p.sfacg.com/p/1892478/1/
不难得出,前面的 http://p.sfacg.com/p/ 就是每个火袋共有的前缀了。 1892478 是这个火袋的id, 最后的1/是页码,第一页默认不会有这个页码,这里是我加的。默认一页现实10本书,可以根据上面显示的总共的小说数计算出总页数。虽然最下面可以选择每页数量,但是有最大限制,当总数过多时就起不到作用了。所以这里就按照默认的数量来。

开 f12,分析下html:
找到总共小说的数量
先找到小说的总数。
点开F12分析html
然后可以看到,一个 <ul class="content_comment cover" eid="xxxx">就是一本小说了。点开标签还可以看到这本小说的封面标题作者等信息,不过这些我们都可以等进入详情页再去爬取。
SF轻小说的每本小说详情页的格式为: http://book.sfacg.com/Novel/xxx/ 这后面的xxx就是前面的 eid 了。
我们先试试把这个火袋里的所有小说爬出来:

三、开爬!

代码写出来大概是这个样子:

import requests
import re
import time

favlist = 'http://p.sfacg.com/p/1892478/'
headers={
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}

req = requests.get(favlist, headers=headers)

pat_getcount = re.compile(r'<a href="javascript:void\(0\)">全部小说\(([0-9]*)\)</a>'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值