今天的分享来满足这位读者的需求,想读“关于数据库sql或者MySQL的,就那种Python来处理数据库,比如Python爬虫爬到数据,然后封存到数据库里面,然后再从sql里面读取,进行分析可视化”。
后面写文章一方面是自己学习笔记,另外也会针对读者需求写一些专题文章,如果你有自己的想法,欢迎浏览器访问下方链接,或者点击阅读原文,给博主提意见:
- 直接来:一行代码爬取微博热搜数据
- 做准备:将爬取到的数据存入csv和mysql、其他数据库
- 搞事情:读取mysql数据并进行数据分析与可视化
- 进阶活:将可视化数据结果呈现到web页面(大屏可视化)
- 悄悄话:项目总结与思考,期待你的来稿
首先需要你的电脑安装好了Python环境,并且安装好了Python开发工具。
如果你还没有安装,可以参考以下文章:
如果仅用Python来处理数据、爬虫、数据分析或者自动化脚本、机器学习等,建议使用Python基础环境+jupyter即可,安装使用参考
当然,我们会发现爬取的数据还是有点问题,虽然已经是数据格式了,但是热搜标题和热搜热度由于在一个td里,所以爬取的时候也是给放到了一列中,着实有点尴尬。
不过没关系,我们处理下,可以利用正则将标题和热度分成两列即可。
直接无脑套入爬虫模板:
觉得这种方法比较麻烦的,可以跳过本部分,后面会介绍一种特别简单的数据获取方式(后面才想到的,之所以先记录这种麻烦方法,也是想让大家学习下这种方法,后面数据爬取中会比较常见)。
接下来,我们就开始从爬去到的数据中提取我们需要的数据啦!
获取到数据对应的xpath路径后,我们就可以调用lxml中的xpath函数进行数据提取啦,如下代码,输出结果为一个列表,列表里的元素就是我们的热搜标题。
这里需要注意的是,我们是获取a标签内的文本内容,所以需要在获取的xpath路径后在加上,同样的,如果有需要我们还可以获取标签内的元素对应的值,如热搜对应的链接。
获取到一条数据后,我们就要开始想获取页面所有标题数据啦,方法也很简单,我们按照上面的方法,在随便获取一个热搜标题的xpath路径,然后对比一下,取相同就可以了。
如下代码所示,我们发现两个xpath路径只有这一级不同,所以将tr后的[2]去掉即可。
当然,办法肯定是有的,前面分析、复制xpath的时候,我们已经发现每个xpath只有tr[n]中的n不同,所以写个循环变动n即可,这样每次获取每条热搜对应的相关数据即可。
下一讲中,我们将一起学习如何将爬去下来的数据存储到本地csv文件,或者数据库中(如:mysql,mongodb,sqlite等),关于数据存储这一节,你还想学习什么其他的内容也可以在评论区、留言区进行留言。