此文转载自:https://blog.csdn.net/weixin_45036306/article/details/112385445

起点中文网月票榜爬取及数据分析

文章目录

  • 起点中文网月票榜爬取及数据分析
  • 1. 数据爬取
    • 1.1.1 准备
    • 1.1.2 网页分析
    • 1.1.3 层次爬取
    • 1.1.4 数据存储
  • 2. 数据分析及可视化

1. 数据爬取

数据爬取就是通过网络爬虫程序来获取需要的网站上的内容信息,比如文字、视频、图片等数据。网络爬虫(网页蜘蛛)是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。一般是通过网页的url获取网页的源代码中,从源代码中提取需要的信息。

1.1.1 准备

运行cmd命令,通过 pip install +库名 或者pip3 install +库名,安装好需要的库,做好准备后即可开始爬取操作。
需要爬取的网页为 https://www.qidian.com/rank/yuepiao?style=2

1.1.2 网页分析

由上图可知,该榜中需要的爬取的有用信息为类名、书名、最新章节、月票数、小说作者、更新的时间、小说简介以及周票数和打赏人数。

1.1.3 层次爬取

html=requests.get(url)#爬取月票的html文件html.encoding='UTF-8'#该网页的编码格式为UTF-8doc=BeautifulSoup(html.text,'lxml')#转换为BeautifulSoup对象

排行榜总共有两页,先得到页数,方便后续的访问。先得到前50名上榜书籍,排行榜上能够获取到的信息:

page=doc.find('div',class_="pagination fr")['data-pagemax']#获取网页最大页码list1=doc.find('table',class_='rank-table-list hot-new').find('tbody').find_all('tr')#找出每款书在该页面的信息块for x in list1:#通过循环对每款书的信息进行提取name=x.find('a',class_='name').text.strip()#取出书名#strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。infrom='https:'+x.find('a',class_='name')['href']#规范url格式,方便进行下一步的深度爬取author=x.find('a',class_='author').text.strip()#爬取作者booktype=x.find('a',class_='type').text.strip()#文本分类month=x.find(class_='month').text#月票数量time=x.find(class_='time').text#上传日期new=x.find('a',class_='chapter').text#最新章节名称

然后爬取每本上榜作品的详细信息

html1=requests.get(infrom)#爬取第二层的html文件html1.encoding='UTF-8'#该网页的编码格式为UTF-8doc1=BeautifulSoup(html1.text,'lxml')list1 = doc1.find('div',class_="book-intro")bookIntrodaction = list1.find("p").text.strip()#获取小说简介listt2=doc1.find(class_="fans-interact cf")monthTickets=listt2.find(class_ ='ticket month-ticket').find(class_ = 'num').text#小说月票weekTickets=listt2.find(class_ ='ticket rec-ticket hidden').find(class_ = 'num').text#小说周票people=listt2.find(class_= 'rewardNum').text#小说本周打赏人数

经过以上操作后前50名的信息就获取成功了!!

1.1.4 数据存储

将爬取到的信息存入到csv文件中,方便后续的可视化分析。

file_exists= os.path.isfile('bookRooking.csv')#判断是否为文件with open('bookRooking.csv','a',encoding='utf-8',newline='') as f: #newline = "" 表示读取的换行符保持不变,原来是啥,读出来还是啥headers=data.keys()#找出data的所有的键w =csv.DictWriter(f,delimiter=',',lineterminator='\n',fieldnames=headers)#创建一个对象if not file_exists :w.writeheader()#第一次写入数据先写入表头w.writerow(data)#单行写入print('当前行写入csv成功!')

此处判断是否为文件,能够有效的防止后面输出的表头不会重复。只有非表头的情况可以写入。

2. 数据分析及可视化

利用csv文件对每个类型书籍的周票均值、月票均值、总共的打赏值绘制折线图,可以一眼出周票、月票、以及打赏最多的类型的书籍。

plt.rcParams['font.sans-serif'] = ['SimHei']
#解决横坐标不能显示中文的况
plt.rcParams['axes.unicode_minus'] = False
#解决横坐标不能显示中文的情况
y1 = data.groupby('类型').sum()['本周打赏人数']
#求和
y2 = data.groupby('类型').mean()['周票']
#求平均值
y3 = data.groupby('类型').mean()['月票']
#求平均值
x=list(dict(y1).keys())
#横坐标值
fig = plt.figure(figsize=(8,6), dpi=100)
#指定画布大小
plt.plot(x,y1,c='red',label='打赏票和')
#指定折线的颜色和标签
plt.plot(x,y2,c='yellow',label='周票均值')
plt.plot(x,y3,c='blue',label='月票均值')
plt.legend(loc='upper left')#标签靠左
plt.title("小说票数折线图")#图名
plt.xlabel('小说类型',fontsize=15)

由上图可以得知仙侠类型的书籍得到的周票和月票均值是最高的其次是玄幻类型的,且玄幻得到打赏的票数最多,军事类型的书籍较少。
利用柱状图能够的出项成绩的具体数据。

plt.rcParams['figure.figsize']=(8,3)#图形大小
data.groupby(['类型']).mean().plot(kind = 'bar')
plt.xticks(rotation=0)#横坐标的角度
plt.ylabel('总票数',fontsize = 15)#纵坐标名
plt.xlabel('小说类型',fontsize = 15)#横坐标名

可以看出一周中给出打赏的人占极少数,月票甚至比周榜的人数还少。
通过饼状图可以看清楚在整体中所占的比重。

sizes= []
for booktype in x:#x是上文折线图中横坐标,即小说所有的类型。bookTypeNum=len(data[data['类型']==booktype])#获取各种小说的数量sizes.append(bookTypeNum)
plt.figure(figsize=(20,20)) #调节图形大小
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.pie(sizes,labels=x,#指定显示的标签autopct='%1.1f%%'#数据保留固定小数位
)
plt.axis('equal')# x,y轴刻度设置一致#本文中可以不用
plt.title('小说类型受欢迎的分布图比')
plt.legend(loc='upper left')# 左上角显示

由此可以玄幻和都市类型的小说是现在网络小说最受欢迎的类型,两种占据了40%的比重。

起点中文网月票榜爬取及数据分析相关推荐

  1. 爬取起点中文网字体反爬取

    参考文章:https://www.jianshu.com/p/fbc99cf4d557 个人比较喜欢看小说,于是乎想爬取小说网站--起点中文网,在爬取定位过程中遇到了反爬取,咨询了我旁边的前端大神,说 ...

  2. Python爬取起点中文网月票榜前500名网络小说介绍

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  3. python爬取网络小说_Python爬取起点中文网月票榜前500名网络小说介绍

    观察网页结构 进入起点原创风云榜:http://r.qidian.com/yuepiao?chn=-1 老套路,懂我的人都知道我要看看有多少内容和页数需要爬. https://ask.hellobi. ...

  4. 爬虫实战——起点中文网小说的爬取

    首先打开起点中文网,网址为:https://www.qidian.com/ 本次实战目标是爬取一本名叫<大千界域>的小说,本次实战仅供交流学习,支持作者,请上起点中文网订阅观看. 我们首先 ...

  5. python爬取微博热搜显示到折线图_微博热搜榜前20信息数据爬取进行数据分析与可视化...

    一.设计方案 1.主题式网络爬虫名称:微博热搜榜前20信息数据爬取进行数据分析与可视化 2.爬取内容与数据特征分析:爬取微博热搜榜前20热搜事件.排名与热度,数据呈一定规律排序. 3.设计方案概述:思 ...

  6. Python爬虫《自动化学报》数据爬取与数据分析

    Python爬虫<自动化学报>数据爬取与数据分析 文章目录 Python爬虫<自动化学报>数据爬取与数据分析 前言 一.代码 二.结果展示 三.爬虫实现 1.准备 2.获取网页 ...

  7. python怎么爬取电影海报_Python 爬取猫眼数据分析《无名之辈》为何能逆袭成黑马?...

    原标题:Python 爬取猫眼数据分析<无名之辈>为何能逆袭成黑马? 作者 | 罗昭成 责编 | 唐小引 出品 | CSDN(ID:CSDNNews) 最近几天,有部国产电影因好评及口碑传 ...

  8. 起点中文网月票等字体数据爬取Python

    起点中文网收藏量等数据爬取 1.难点分析 通过chrome开发工具分析我么可以得出结论,月票数量不是html文本,而是通过字体生成出来的数字,这时候的爬虫就要复杂一些了. 2.思路分析 先爬取目标网页 ...

  9. 爬虫2_起点中文网字体反爬

    今天讲一下起点中文网的列表页爬取,准备爬取的是小说书名.图片url.详情页url.作者.字数.分类及状态. 爬取网址:https://www.qidian.com/all 分析url 翻页至第二页.第 ...

  10. 爬虫实战入门级教学(数据爬取->数据分析->数据存储)

    爬虫实战入门级教学(数据爬取->数据分析->数据存储) 天天刷题好累哦,来一期简单舒适的爬虫学习,小试牛刀(仅供学习交流,不足之处还请指正) 文章讲的比较细比较啰嗦,适合未接触过爬虫的新手 ...

最新文章

  1. webService 远程访问不了的问题
  2. mysql异步扩展_基于Swoole扩展开发异步高性能的MySQL代理服务器
  3. Object C学习笔记22-#define 用法
  4. Stream流中的常用方法_count
  5. NET问答: Find() 和 Where().FirstOrDefault() 该如何选择 ?
  6. java 文件下载方法_【工具类】Java后台上传下载文件的几种方式
  7. python的一些库(模块)集合
  8. 如何解决“There is no locally stored library”的问题
  9. 500万数据mysql_mysql 500万数据库
  10. 无缓冲I/O与有缓冲I/O区别
  11. 豆瓣评论【数据集分享】
  12. Python + Selenium 爬取网易云课堂课时标题及时长
  13. wso2 esb 配置mysql_WSO2企业服务总线(WSO2 ESB)介绍
  14. 为你的企业建立竞争情报系统
  15. 关于refresh token的总结
  16. 小米oj 找到第 N 个数字 II
  17. PS 滤镜——(扭曲)逆球面化 (凹陷效果)
  18. 为什么面试要问hashmap 的原理
  19. 两万文字多图详解常用软件工具使用(持续更新)
  20. 打印俄文字母表java,俄语字母与英语字母对照表

热门文章

  1. 网络安全实验室CTF—选择题解析 writeup
  2. 基于pyswarm库实现粒子群优化算法求解带约束的优化问题
  3. pdf转word思路和方法
  4. 微型计算机启天m425显卡驱动,Lenovo联想启天M425台式机NVIDIA VGA驱动26.21.14.4223版For Win10-64(2020年4月7日发布)...
  5. 硬盘pe安装红旗linux系统,WinPE 安装操作系统详细图解(图文教程)
  6. linux系统日志message 分析,Linux系统日志及日志分析
  7. java实现在线预览----poi操作word转html及03、07版本兼容问题
  8. 如何将两个mp3文件合成一个?
  9. dnf喇叭怎么设置不显示服务器,《DNF》屏蔽广告喇叭方法 广告喇叭怎么关掉
  10. 50步带你在windows PC上创建属于自己的虚拟机(一)