excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Python中如何爬取《百家姓》的数据保存到excel中

这里保存数据用到pandas模块,pandas模块中to_excel(),该方法可以把数据保存在excel中。

百家姓数据分析

可以直接从百度上搜索“百家姓氏大全排名表”关键字,例如下图

点击网页显示的内容如下:

网页显示的数据大概就是上面的那样子,接着来就需要分析一下源代码中是否有我们想要的信息;查看源代码可以使用键盘上的F12 。

从上图中可以看到,我们可以找到相应的代码,里面的确是有相关的信息。

这个时候就需要利用Python来完成数据抓取了

完成这个项目,需要准备以下模块,lxml --> 专门用来专区HTML标签的,pandas --> 专门用来保存数据到excel中的,requests -->专门用来请求URL地址的;

这几个模块都可以用pip install 来进行安装。

先简单的写个测试案例,后面再完善

代码解释:先使用requests请求URL地址,如果请求成功,则status_code 返回的是200,所以就可以编写主要处理数据的代码了;

通过xpath获取关键代码,因为发现百家姓的数据都是放在p标签里面的,p标签的最上游标签是一个div,所以这里先对div进行xpath解析;

div解析的结果是一个list,所以遍历list就是得到了每个div下的所有标签;

因为我们需要的是p标签里面的内容,所以只对p标签进行了取值(text()) 表示获取文本。

从数据的出结果来看,的确是成功的抓取到了数据,但是返回的是一个列表,而且列表的数据中还有一些其他的特殊字符;

所以在接下来我们要处理这种异常的数据,并且从结果来看到,列表的第一个元素和最后一个元素都不是我们想要的;

上述代码中排除了之前说的数据中存在的一些特殊字符和最后得到的数据中的空值,最后的数据显示为;

从结果来看,列表中每一个元素显示的数据都,对比到网页中,就是网页中的一行数据。

所以可以把这个数据拆分开来,每一个列表的一个元素,都可以单独拆分为一个列表;但是列表中每一个元素都挤在一起了,那么应该如何分开的,这里就需要用到正则表达式来进行操作了。

观察数据,因为抓取的百家姓的数据都是排序的,所以可以通过正则表达式中的替换功能,每个非数字+数字,就是一组匹配方式,所以通过这个关系,可以将这种数据分开。

完整代码

上面代码运行的结果如下:

从结果来看,确实是达到了将数据保存在Excel中的想法。

难点

比较有意思的地方不是数据的抓取,而是数据的处理,在处理数据这里也是废了一番功夫。

处理问题的思路就是将所有数据的特殊字符以及空格全部处理掉。然后找出数字和非数字的规律,进行正则表达式拆分。有人就有疑问了,为什么不直接通过sub进行匹配拆分,还要进行findall+sub来进行操作呢。关于这个问题大家可以尝试一下,然后就知道为什么了。哈哈哈

当然了,如果大家有什么疑问,可以私信里找我,一起学习,一起进步。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接