天天看点

python基金筛选_如何利用python挑选基金?

前几天有位朋友向我求助,想让我写个爬虫帮他爬取基金的数据。乐于助人的我怎么会袖手旁观呢?

首先捋一捋思路:获取网页→获取一条数据→获取全部数据→把数据保存为文件。有了思路就开干喽~朋友需要获取的数据来源于天天基金网的基金排行页,先来观察一下它的结构。每一个基金都在一行,翻页可获取下一页基金。

python基金筛选_如何利用python挑选基金?

获取数据

先试试能不能用requests库直接获取数据吧。

python基金筛选_如何利用python挑选基金?

emmm。。。看来是编码不对,改一下编码试试。在浏览器按F12查看一下网页是什么编码的。

python基金筛选_如何利用python挑选基金?
python基金筛选_如何利用python挑选基金?

换一个编码后就好了。接下来获取一条数据,观察一下网页的代码,基金的代码在a标签里,这次使用xpath来获取数据。(不会使用xpath的小伙伴可以戳这里)

嗯?怎么会没有数据呢?代码应该没错的鸭QAQ。。。在多次尝试仍然没有获取到数据后只好去求助小哥哥了。。。

小哥哥说这可能是网页使用ajax技术来获取数据的,网页本来只是个框架,所以requests获取的网页没有数据。在网上查阅资料后,我终于弄懂是怎么回事了。网页就是一个框架,每次获取数据后(例如翻页)就把数据更新到预定的地方(红色框部分),这样就不用重新加载网页。

小哥哥教我在浏览器按F12后再按网页的翻页按钮,就能看到请求的网址,用requests库就能获取数据了。

python基金筛选_如何利用python挑选基金?

无访问权限。。。看来被识别到是爬虫了,加个请求头试试。

python基金筛选_如何利用python挑选基金?

数据获取到了,用eval()加正则表达式把数据提取出来。

python基金筛选_如何利用python挑选基金?

获取全部数据

接下来写个循环获取全部数据。根据观察,pi这个参数就是页数,使用字符串格式化的方法即可获取全部数据。

python基金筛选_如何利用python挑选基金?
python基金筛选_如何利用python挑选基金?

把数据保存为文件

数据都获取到了,最后就是把它们保存到文件里,这里选择保存为csv格式。

python基金筛选_如何利用python挑选基金?

到这里一个简单的爬虫就完成啦,觉得不错的读者麻烦点一点文章底下的“在看”支持一下我~