如何用Python写一个抓取天天基金网上每个基金经理业绩的爬虫

发布网友 发布时间:2022-04-23 22:56

我来回答

1个回答

热心网友 时间:2022-04-18 11:24

摘要亲您好,很高兴为您解答,语言:pythonBeautifulsoup解析htmljs2py解析JavaScriptpython 爬虫正则表达式提取数据界面设计用的PyQt5功能片段伪装头# headersheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36', 'Referer': 'http://fund.eastmoney.com/data/fundranking.html',}123456爬取天天基金排行榜数据# 爬取排行榜基金数据def getRankDatas(): url = "http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=all&rs=&gs=0&sc=6yzf&st=desc&sd=2020-08-15&ed=2021-08-15&qdii=&tabSubtype=,,,,,&pi=1&pn=50&dx=1&v=0.6075346553325671" req = requests.get(url=url, headers=headers) datas = req.text db = js2py.eval_js(datas)#数据是JavaScript,要用js2py解析器解析 data = db['datas'] return data12345678搜索功能实现# 搜索基金数据def searchData(text): url = "http://fund.eastmoney.com/" + str(text) + ".html" req = urllib.request.Request(url=url, headers=headers) response = urllib.request.urlopen(req) bs = BeautifulSoup(response, "html.p咨询记录 · 回答于2021-12-07如何用Python写一个抓取天天基金网上每个基金经理业绩的爬虫亲您好,我这边正在为您查询,请稍等片刻,我这边马上回复您~亲您好,很高兴为您解答,语言:pythonBeautifulsoup解析htmljs2py解析JavaScriptpython 爬虫正则表达式提取数据界面设计用的PyQt5功能片段伪装头# headersheaders = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36', 'Referer': 'http://fund.eastmoney.com/data/fundranking.html',}123456爬取天天基金排行榜数据# 爬取排行榜基金数据def getRankDatas(): url = "http://fund.eastmoney.com/data/rankhandler.aspx?op=ph&dt=kf&ft=all&rs=&gs=0&sc=6yzf&st=desc&sd=2020-08-15&ed=2021-08-15&qdii=&tabSubtype=,,,,,&pi=1&pn=50&dx=1&v=0.6075346553325671" req = requests.get(url=url, headers=headers) datas = req.text db = js2py.eval_js(datas)#数据是JavaScript,要用js2py解析器解析 data = db['datas'] return data12345678搜索功能实现# 搜索基金数据def searchData(text): url = "http://fund.eastmoney.com/" + str(text) + ".html" req = urllib.request.Request(url=url, headers=headers) response = urllib.request.urlopen(req) bs = BeautifulSoup(response, "html.p这不全吧我想找的是爬取每位基金经理历史业绩跟申赎率的数据亲您好,很高兴为您解答,打开chrome的开发者调试,选择Network,然后刷新一下,很快我们就能发现我们想要的东西了。可以看到,这是基金代码加当前时间的一个接口请求的url:也就是说我们可以简单的通过基金代码.js?v=当前时间这样一个接口就能获取到相应的数据了。在这里插入图片描述打开开发者模式现在我们来看看这个文件的具体内容是什么?显然,这里面的东西就是我们想要的,Data_netWorthTrend里面的"y"就包含了每一天的净值在这里插入图片描述获取数据现在我们的接口已经十分明确了,就是http://fund.eastmoney.com/pingzhongdata/基金代码.js?v=当前时间通过基金代码和当前时间我们就能够获取到相应的数据,接下来就是需要将我们想要的数据从获取的文件中提取出来了,也就是我们说的数据清洗的过程。这个网站提供的数据不是常见的json格式,因此提取会有点麻烦,比如通过字符串查找等,但是由于这个是js文件,因此,我找到了更合适的方法——利用了PyExecJs模块就能很方便地编译解析js代码啦。现在直接上代码。首先终端里,pip install PyExecJs安装上该模块。然后引入这些模块查看数据这样我们就可以通过基金代码来查到对应的数据啦可以看到,最近一天的净值是1.0831,从网站上我们也可以验证一下这个数据是否正确在这里插入图片描述当然,我们也可以自己画一个走势图来验证一下在这里插入图片描述可以看到,和天天基金网画的是一样的。不过这个方法获取的数据有个小问题,就是无法获得对应的确切日期。我们如果分析最近几个周、几个月的数据,其实也可以不需要了解具体某一天的数据,取最近20天、40天等方式即可。当然,也可以从当天开始逆推回去,给每个净值标上日期,不过这个需要忽略节假日,处理起来比较麻烦且必要性不大,我就没有做这个处理不太明白你说的我是小白有没有直接的代码亲您好,很高兴为您解答,亲您好没有的哦

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com