来搞一个小爬虫~基金经理人信息!

'''爬取天天基金网站,所有基金经理人以及所管的基金的信息。
网址:http://fund.eastmoney.com/Data/FundDataPortfolio_Interface.aspx?dt=14&mc=returnjson&ft=all&pn=50&pi=1&sc=abbname&st=asc
关键字:get方法。
流程:先获取第一层的namenumber,然后对于每一个namenumber爬取第二层的fund的信息。
结果文件:g:\\fund.csv
'''
import requests
import json
import re
from bs4 import BeautifulSoup

def get_singlepage_namenum(page):
	namenumber=[]
	url_1 = f'http://fund.eastmoney.com/Data/FundDataPortfolio_Interface.aspx?dt=14&mc=returnjson&ft=all&pn=50&pi={page}&sc=abbname&st=asc' #第一次爬虫的目标网站。
	rawhtml = requests.get(url_1)
	listhtmltext = json.loads(rawhtml.text.replace("var returnjson=","").replace("data",'"data"').replace('record','"record"').replace('pages','"pages"').replace("curpage",'"curpage"'))  # 把字符串变成列表
	for i in range(len(listhtmltext['data'])):	
		namenumber.extend((listhtmltext)['data'][i][0]) #链接到二次爬虫的枢纽。
	return(namenumber)

def get_totalinfo():
	#开始二次爬虫。
	for unitnamenum in get_singlepage_namenum(page):
		res = requests.get(f'http://fund.eastmoney.com/manager/{unitnamenum}.html')			
		res.encoding = ('utf8') #解决乱码
		#text=res.text.encode('ISO-8859-1').decode('gb18030') #另一种解决乱码的方式
		soupunit = BeautifulSoup(res.text,"lxml")
		name=[]	
		fund=[]
		for unitfund in soupunit.find_all("tbody")[1].find_all("tr"):
			name.extend((listhtmltext)['data'][i][1]) #managername 
			for unitfund_info in unitfund.find_all("td")[0]:
				fund.extend(unitfund_info.text.replace("\n","").replace("\t","")) #fundcode
		info=[]
		for i in range(0,len(fund)):
			info.append(list(name[i],fund[i])) #managername 
		return info

for page in range(1,43): 
	get_singlepage_namenum(page)
	get_totalinfo()
with open('g:\\classfund.csv','w',encoding='utf8') as f:
	for unitlistinfo in get_totalinfo():
		f.write(unitlistinfo+'\n')

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值