我的编程空间,编程开发者的网络收藏夹
学习永远不晚

项目实战,蛮适合新手小白的案例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

项目实战,蛮适合新手小白的案例

前言

Python 的知识很多,基本的入门就有很多东西要学,还有各种合样的库要学习。很多同学学了一段时间,进展很慢,学了前面忘了后面!今天我就给大家介绍一个非常简单的爬虫小例子,来综合练习,非常不错!

爬取的目标

我们这次选择一个比较好玩的网站叫"好奇心日报",里面的内容非常有趣,而且图片都是高清,非常漂亮,今天我们就探索一下好奇心日报的爬取。

项目实战,蛮适合新手小白的案例

准备工作

前期需要对这个网站进行简单的分析,网页的结构,源码的查看,有无反爬策略等等。

1)第一步是发现好奇心日报的文章地址编码是按数字递增的,例如:http://www.qdaily.com/articles/38425.html

2)截止今天,好奇心日报的文章编码已经从1到55613了,共5万篇文章。

3)然后我发现文章的标题,分享数和文章发布日期都写死在页面里,但是评论数不在页面中 。

4)为了找到评论数,我使用谷歌浏览器的F12的 network 功能,发现了评论是通过json 数据获得的,地址类似:http://www.qdaily.com/comments/article/38425/0.json 。

5)看到 json 的数据自带评论,于是我顺便把评论的内容也爬下来了,顺便做一个评论的词云

看个人资料,有Python资料

主体代码

1)先创建数据库

数据库我们用选择最最简单的 sqlite3 ,这个数据非常适合小白入门。这个库的详细用法。

项目实战,蛮适合新手小白的案例

用一个类QDaily_DB来专门处理db的创建,保存和关闭.上面的代码是创建部分:

1)创建一个数据库名字叫qdaily.db,里面分布建2张表
2)一张表qdality用来保存好奇心日报的id,标题,点赞分享数,日期和评论数
3)一张表comments用来保存好奇心日报的id和每一条评论的内容

2)网页爬取

网页的爬取,我们这里并没有用什么高深的库和爬虫框架,用简单的requests+bs4的组合,这一个一套比较适合小白上手的库,也没有用并发框架。

1).网页的下载

前面说了,好奇心日报的url的规则已经找到,只要一个一个解析就行!

项目实战,蛮适合新手小白的案例

  • 我们输入一个id,来构造一个url,然后把这个url填入到requests中解析即可。

  • 注意编码方式,获得页面的内容html_content,然后把详细的html_content内容填入parse_html类函数中进行详细处理.

  • 为了防止出现爬取异常,一定要加入try/except和finally这样的异常保护

3).页面的解析和评论内容的获取

下面就是这个项目稍微难有点的地方,需要用BeautifulSoup来详细解析页面的内容。

项目实战,蛮适合新手小白的案例

评论区的内容稍微有一点点的复制,需要用构造一个header取获取,直接解析页面无法获取。

项目实战,蛮适合新手小白的案例

项目实战,蛮适合新手小白的案例

sqlite的操作非常简单,用的也是SQL的语法,上手来说非常方便。我们用insert语句动态插入数据,然后execute去执行,最后不要忘记commit!

05.:数据的展示

爬完5万篇文章用了快一天,虽然多线程可以加快速度,但我采用单线程减轻好奇心日报服务器的压力, 先是根据文章分享数排序:

项目实战,蛮适合新手小白的案例

然后是根据文章的评论数排序:

项目实战,蛮适合新手小白的案例

06:好奇心日报文章id与评论数的关系

感觉好奇心日报用的人越来越多了,那么随着id的增加,文章的平均评论数应该也会增加。

项目实战,蛮适合新手小白的案例

项目实战,蛮适合新手小白的案例

可以看出越到后面,平均每篇文章的分享数就越多,反映出好奇心日报的用户数变多

07:根据评论生成词云

用matplotlib和wordcloud库生成一个词云评论图,看看哪些关键字比较集中!

项目实战,蛮适合新手小白的案例

生成的词云结果如下

项目实战,蛮适合新手小白的案例

发现评论比较多的是"哈哈哈","是的","呵呵","谢谢"这样的短口语词汇。整个这个实战小例子还是非常有趣的,从数据爬取-数据入库,数据分析和词云,一条龙服务,还是非常值得去试试,对初学者强化基础知识,入门比较有帮助。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

项目实战,蛮适合新手小白的案例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

项目实战,蛮适合新手小白的案例

前言Python 的知识很多,基本的入门就有很多东西要学,还有各种合样的库要学习。很多同学学了一段时间,进展很慢,学了前面忘了后面!今天我就给大家介绍一个非常简单的爬虫小例子,来综合练习,非常不错!1.爬取的目标我们这次选择一个比较好玩的网
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录